[tarantool-patches] [PATCH 03/10] swim: validate URI in swim_probe_member()
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Wed May 15 22:36:40 MSK 2019
Similar methods validate their arguments: add_member,
remove_member. Validate here as well for consistency.
Part of #3234
---
src/lib/swim/swim.c | 4 ++++
test/unit/swim.c | 3 ++-
test/unit/swim.result | 7 ++++---
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/lib/swim/swim.c b/src/lib/swim/swim.c
index a9a0a39b3..fb2b1490b 100644
--- a/src/lib/swim/swim.c
+++ b/src/lib/swim/swim.c
@@ -1890,6 +1890,10 @@ int
swim_probe_member(struct swim *swim, const char *uri)
{
assert(swim_is_configured(swim));
+ if (uri == NULL) {
+ diag_set(SwimError, "swim.probe_member: URI is mandatory");
+ return -1;
+ }
struct sockaddr_in addr;
if (swim_uri_to_addr(uri, &addr, "swim.probe_member:") != 0)
return -1;
diff --git a/test/unit/swim.c b/test/unit/swim.c
index d9613e8e0..c6ef1eebc 100644
--- a/test/unit/swim.c
+++ b/test/unit/swim.c
@@ -359,12 +359,13 @@ swim_test_basic_gossip(void)
static void
swim_test_probe(void)
{
- swim_start_test(2);
+ swim_start_test(3);
struct swim_cluster *cluster = swim_cluster_new(2);
struct swim *s1 = swim_cluster_member(cluster, 0);
struct swim *s2 = swim_cluster_member(cluster, 1);
const char *s2_uri = swim_member_uri(swim_self(s2));
+ is(swim_probe_member(s1, NULL), -1, "probe validates URI");
is(swim_probe_member(s1, s2_uri), 0, "send probe");
is(swim_cluster_wait_fullmesh(cluster, 0.1), 0,
"receive ACK on probe and get fullmesh")
diff --git a/test/unit/swim.result b/test/unit/swim.result
index 266d83589..587f66c7a 100644
--- a/test/unit/swim.result
+++ b/test/unit/swim.result
@@ -78,9 +78,10 @@ ok 5 - subtests
ok 6 - subtests
*** swim_test_basic_failure_detection: done ***
*** swim_test_probe ***
- 1..2
- ok 1 - send probe
- ok 2 - receive ACK on probe and get fullmesh
+ 1..3
+ ok 1 - probe validates URI
+ ok 2 - send probe
+ ok 3 - receive ACK on probe and get fullmesh
ok 7 - subtests
*** swim_test_probe: done ***
*** swim_test_refute ***
--
2.20.1 (Apple Git-117)
More information about the Tarantool-patches
mailing list