From 4492ad9328e59edc4c8d3db8cd881941b7903741 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 12 Jun 2020 01:19:20 +0200 Subject: Send real hostname and port in idle check --- utils.c | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) (limited to 'utils.c') diff --git a/utils.c b/utils.c index 1fa8621..56b75a5 100644 --- a/utils.c +++ b/utils.c @@ -286,7 +286,8 @@ connect_any(struct cfg *cfg, struct uring_task *task, connect_next(cfg, task, conn); } -uint16_t sockaddr_port(struct sockaddr_in46 *addr) +uint16_t +sockaddr_port(struct sockaddr_in46 *addr) { switch (addr->storage.ss_family) { case AF_INET: @@ -299,23 +300,43 @@ uint16_t sockaddr_port(struct sockaddr_in46 *addr) } char * -sockaddr_to_str(struct sockaddr_in46 *addr, char *buf, size_t buflen) +sockaddr_addr(struct sockaddr_in46 *addr, char *buf, size_t len) +{ + switch (addr->storage.ss_family) { + case AF_INET: + if (inet_ntop(addr->in4.sin_family, &addr->in4.sin_addr, buf, len)) + return buf; + break; + case AF_INET6: + if (inet_ntop(addr->in6.sin6_family, &addr->in6.sin6_addr, buf, len)) + return buf; + break; + default: + break; + } + + snprintf(buf, len, ""); + return buf; +} + +char * +sockaddr_to_str(struct sockaddr_in46 *addr, char *buf, size_t len) { char abuf[ADDRSTRLEN]; switch (addr->storage.ss_family) { case AF_INET: - snprintf(buf, buflen, "AF_INET4 %s %u", - inet_ntop(addr->in4.sin_family, &addr->in4.sin_addr, abuf, sizeof(abuf)), - (unsigned)ntohs(addr->in4.sin_port)); + snprintf(buf, len, "AF_INET4 %s %" PRIu16, + sockaddr_addr(addr, abuf, sizeof(abuf)), + sockaddr_port(addr)); break; case AF_INET6: - snprintf(buf, buflen, "AF_INET6 %s %u", - inet_ntop(addr->in6.sin6_family, &addr->in6.sin6_addr, abuf, sizeof(abuf)), - (unsigned)ntohs(addr->in6.sin6_port)); + snprintf(buf, len, "AF_INET6 %s %" PRIu16, + sockaddr_addr(addr, abuf, sizeof(abuf)), + sockaddr_port(addr)); break; default: - snprintf(buf, buflen, "AF_UNKNOWN"); + snprintf(buf, len, "AF_UNKNOWN"); break; } -- cgit v1.2.3