diff --git a/src/hd-rum-translator/hd-rum-translator.cpp b/src/hd-rum-translator/hd-rum-translator.cpp index 90b9a3e2f..6568e9d73 100644 --- a/src/hd-rum-translator/hd-rum-translator.cpp +++ b/src/hd-rum-translator/hd-rum-translator.cpp @@ -888,11 +888,9 @@ public: log_msg(LOG_LEVEL_NOTICE, "Removing participant\n"); std::string msg = "delete-port "; auto addr = reinterpret_cast(&it->addr); - char addr_str[128]; - get_sockaddr_addr_str(addr, addr_str, sizeof(addr_str)); - char *replica_name = get_replica_mod_name(addr_str, get_sockaddr_addr_port(addr)); - msg += replica_name; - free(replica_name); + char replica_name[ADDR_STR_BUF_LEN]; + msg += get_sockaddr_str(addr, replica_name, + sizeof replica_name); std::swap(*it, participants.back()); participants.pop_back(); diff --git a/src/utils/net.c b/src/utils/net.c index 35b58891e..55c3b09b9 100644 --- a/src/utils/net.c +++ b/src/utils/net.c @@ -411,7 +411,9 @@ bool is_ipv6_supported(void) return true; } -unsigned get_sockaddr_addr_port(const struct sockaddr *sa){ +static unsigned +get_sockaddr_addr_port(const struct sockaddr *sa) +{ unsigned port = 0; if (sa->sa_family == AF_INET6) { port = ntohs(((const struct sockaddr_in6 *) (const void *) sa) @@ -426,13 +428,9 @@ unsigned get_sockaddr_addr_port(const struct sockaddr *sa){ return port; } -/** - * @returns the input buffer (buf) - */ -char * +static char * get_sockaddr_addr_str(const struct sockaddr *sa, char *buf, size_t n) { - assert(n >= IN6_MAX_ASCII_LEN + 3 /* []: */ + 1 /* \0 */); const void *src = NULL; if (sa->sa_family == AF_INET6) { snprintf(buf, n, "["); @@ -458,11 +456,13 @@ get_sockaddr_addr_str(const struct sockaddr *sa, char *buf, size_t n) } /** + * @param n size of buf; must be at least ADDR_STR_BUF_LEN * @returns the input buffer (buf) */ char * get_sockaddr_str(const struct sockaddr *sa, char *buf, size_t n) { + assert(n >= ADDR_STR_BUF_LEN); get_sockaddr_addr_str(sa, buf, n); unsigned port = get_sockaddr_addr_port(sa); diff --git a/src/utils/net.h b/src/utils/net.h index 62b711ca4..df7c71017 100644 --- a/src/utils/net.h +++ b/src/utils/net.h @@ -70,8 +70,6 @@ bool is_host_private(const char *hostname); uint16_t socket_get_recv_port(int fd); bool get_local_addresses(struct sockaddr_storage *addrs, size_t *len, int ip_version); bool is_ipv6_supported(void); -char *get_sockaddr_addr_str(const struct sockaddr *sa, char *buf, size_t n); -unsigned get_sockaddr_addr_port(const struct sockaddr *sa); char *get_sockaddr_str(const struct sockaddr *sa, char *buf, size_t n); const char *ug_gai_strerror(int errcode);