diff options
-rw-r--r-- | rpc/rpc-transport/socket/src/name.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/rpc/rpc-transport/socket/src/name.c b/rpc/rpc-transport/socket/src/name.c index ca14402ed4a..14c11cb835f 100644 --- a/rpc/rpc-transport/socket/src/name.c +++ b/rpc/rpc-transport/socket/src/name.c @@ -362,6 +362,9 @@ af_inet_server_get_local_sockaddr(rpc_transport_t *this, struct sockaddr *addr, dict_t *options = NULL; int32_t ret = 0; + /* initializes addr_len */ + *addr_len = 0; + options = this->options; listen_port_data = dict_get(options, "transport.socket.listen-port"); @@ -413,11 +416,13 @@ af_inet_server_get_local_sockaddr(rpc_transport_t *this, struct sockaddr *addr, } } - if (!(*addr_len) && res && res->ai_addr) { - memcpy(addr, res->ai_addr, res->ai_addrlen); - *addr_len = res->ai_addrlen; - } else { - ret = -1; + if (!(*addr_len)) { + if (res && res->ai_addr) { + memcpy(addr, res->ai_addr, res->ai_addrlen); + *addr_len = res->ai_addrlen; + } else { + ret = -1; + } } freeaddrinfo(res); @@ -596,7 +601,7 @@ socket_server_get_local_sockaddr(rpc_transport_t *this, struct sockaddr *addr, switch (addr->sa_family) { case AF_INET_SDP: addr->sa_family = AF_INET; - /* Fall through */ + /* Fall through */ case AF_INET: case AF_INET6: case AF_UNSPEC: |