X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Flocate_host.c;h=d8a2c5b919f1def7cbd3b5923d62542a49fccea0;hp=0331d82df174d7b8efbfa95ea47593f554fa276d;hb=7ead4dce463c76a42b50aa3c7581fc88eea15f8d;hpb=0fa56fb7b2e6c8279e6eec863cc926e04b8dd81f diff --git a/citadel/locate_host.c b/citadel/locate_host.c index 0331d82df..d8a2c5b91 100644 --- a/citadel/locate_host.c +++ b/citadel/locate_host.c @@ -49,6 +49,11 @@ void locate_host(char *tbuf, size_t n, char *abuf, size_t na, int client_socket) getpeername(client_socket, (struct sockaddr *)&clientaddr, &addrlen); getnameinfo((struct sockaddr *)&clientaddr, addrlen, tbuf, n, NULL, 0, 0); getnameinfo((struct sockaddr *)&clientaddr, addrlen, abuf, na, NULL, 0, NI_NUMERICHOST); + + /* Convert IPv6-mapped IPv4 addresses back to traditional dotted quad */ + if ( (strlen(abuf) > 7) && (!strncasecmp(abuf, "::ffff:", 7)) ) { + strcpy(abuf, &abuf[7]); + } }