[tarantool-patches] [PATCH 4/5] swim: allow to omit host in URI
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Wed May 1 01:31:26 MSK 2019
Before the patch swim.cfg() was returning an error on an attempt
to use URI like 'port', without a host. But it would be useful,
easy, and short to allow that, and use '127.0.0.1' host by
default. Compare:
swim:cfg({uri = 1234})
vs
swim:cfg({uri = '127.0.0.1:1234'})
It is remarkable that box.cfg{listen} also allows to omit host.
Note, that use '0.0.0.0' (INADDR_ANY) is forbidden. Otherwise
1) Different instances interacting with this one via not the
same interfaces would see different source IP addresses.
It would mess member tables;
2) This instance would not be able to encode its IP address
in the meta section, because it has no a fixed IP. At the
same time omission of it and usage of UDP header source
address is not possible as well, because UDP header is not
encrypted and therefore is not safe to look at.
Part of #3234
---
src/lib/swim/swim.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/lib/swim/swim.c b/src/lib/swim/swim.c
index 22dfc3d2a..b2b4901b1 100644
--- a/src/lib/swim/swim.c
+++ b/src/lib/swim/swim.c
@@ -1696,7 +1696,9 @@ swim_uri_to_addr(const char *uri, struct sockaddr_in *addr,
return -1;
}
*addr = *((struct sockaddr_in *) &storage);
- if (addr->sin_addr.s_addr == 0) {
+ if (is_host_empty) {
+ addr->sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ } else if (addr->sin_addr.s_addr == 0) {
diag_set(IllegalParams, "%s INADDR_ANY is not supported",
prefix);
return -1;
--
2.20.1 (Apple Git-117)
More information about the Tarantool-patches
mailing list