]> code.citadel.org Git - citadel.git/blobdiff - webcit/locate_host.c
* More tweaks to locate_host() but we still need to work on this because it does...
[citadel.git] / webcit / locate_host.c
index 165081005e6bdd67e1b0ffa3f252316402852a29..b18f1031bc9ddc4b63b3f190d11dcfdd177616ed 100644 (file)
@@ -29,15 +29,17 @@ void locate_host(StrBuf *tbuf, int client_socket)
 {
        struct sockaddr_in6 clientaddr;
        unsigned int addrlen = sizeof(clientaddr);
-       char str[256];
+       char clienthost[NI_MAXHOST];
+       char clientservice[NI_MAXSERV];
 
        getpeername(client_socket, (struct sockaddr *)&clientaddr, &addrlen);
-       if(inet_ntop(AF_INET6, &clientaddr.sin6_addr, str, sizeof(str))) {
-               StrBufAppendBufPlain(tbuf, str, -1, 0);
-       }
-       else {
-               StrBufAppendBufPlain(tbuf, HKEY("<unknown>"), 0);
-       }
+       getnameinfo((struct sockaddr *)&clientaddr, addrlen,
+               clienthost, sizeof(clienthost),
+               clientservice, sizeof(clientservice),
+               NI_NUMERICHOST
+       );
+
+        StrBufAppendBufPlain(tbuf, clienthost, -1, 0);
 }
 
 #else /* CTDL_IPV6 */