-/**
- * Print numeric host and port number (beware - uses static char).
- *
- * \param sa The IPv4/IPv6 socket address to use.
- *
- * \return Host string in numeric host:port format, \sa parse_url().
- * \sa getnameinfo(3), services(5), nsswitch.conf(5)
- */
-static char *host_and_port(const struct sockaddr_storage *ss)
-{
- const struct sockaddr *sa = normalize_ip_address(ss);
- char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
- static char output[sizeof(hbuf) + sizeof(sbuf) + 4];
- int ret;
-
- ret = getnameinfo(sa, salen(sa),
- hbuf, sizeof(hbuf),
- sbuf, sizeof(sbuf),
- NI_NUMERICHOST | NI_NUMERICSERV);
- if (ret) {
- snprintf(output, sizeof(output), "(unknown)");
- PARA_WARNING_LOG("hostname lookup error (%s).\n",
- gai_strerror(ret));
- } else if (sa->sa_family == AF_INET6) {
- snprintf(output, sizeof(output), "[%s]:%s", hbuf, sbuf);
- } else {
- snprintf(output, sizeof(output), "%s:%s", hbuf, sbuf);
- }
- return output;
-}
-