sas Sun Sep 22 20:49:13 2002 EDT Modified files: /php4/sapi/thttpd thttpd.c Log: Use generic getnameinfo for address-to-name translation, if available. This adds support for IPv6 addresses. Index: php4/sapi/thttpd/thttpd.c diff -u php4/sapi/thttpd/thttpd.c:1.68 php4/sapi/thttpd/thttpd.c:1.69 --- php4/sapi/thttpd/thttpd.c:1.68 Wed Sep 18 17:57:35 2002 +++ php4/sapi/thttpd/thttpd.c Sun Sep 22 20:49:12 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: thttpd.c,v 1.68 2002/09/18 21:57:35 zeev Exp $ */ +/* $Id: thttpd.c,v 1.69 2002/09/23 00:49:12 sas Exp $ */ #include "php.h" #include "SAPI.h" @@ -34,6 +34,11 @@ #include <stdlib.h> #include <unistd.h> +#ifdef HAVE_GETNAMEINFO +#include <sys/socket.h> +#include <netdb.h> +#endif + typedef struct { httpd_conn *hc; int read_post_data; @@ -277,6 +282,7 @@ { char buf[BUF_SIZE + 1]; char *p; + int sa_len; php_register_variable("PHP_SELF", SG(request_info).request_uri, track_vars_array TSRMLS_CC); php_register_variable("SERVER_SOFTWARE", SERVER_SOFTWARE, track_vars_array TSRMLS_CC); @@ -290,11 +296,22 @@ } else { php_register_variable("SERVER_PROTOCOL", "HTTP/1.0", track_vars_array TSRMLS_CC); } - + +#ifdef HAVE_GETNAMEINFO + switch (TG(hc)->client_addr.sa.sa_family) { + case AF_INET: sa_len = sizeof(struct sockaddr_in); break; + case AF_INET6: sa_len = sizeof(struct sockaddr_in6); break; + default: sa_len = 0; + } + + if (getnameinfo(&TG(hc)->client_addr.sa, sa_len, buf, sizeof(buf), 0, 0, +NI_NUMERICHOST) == 0) { +#else p = inet_ntoa(TG(hc)->client_addr.sa_in.sin_addr); + /* string representation of IPs are never larger than 512 bytes */ if (p) { memcpy(buf, p, strlen(p) + 1); +#endif ADD_STRING("REMOTE_ADDR"); ADD_STRING("REMOTE_HOST"); }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php