com php-src: Improve fix bug #68421 access.format='%R ' doesn't log ipv6 address: sapi/fpm/fpm/fast cgi.c
| From: | Remi Collet | Date: | Mon, 17 Nov 2014 05:53:38 +0000 |
| Subject: | com php-src: Improve fix bug #68421 access.format='%R ' doesn't log ipv6 address: sapi/fpm/fpm/fast cgi.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-83111@lists.php.net to get a copy of this message | ||
Commit: 4657289e87e18bb8967d5a8b0163c772d410e2b8
Author: Remi Collet <remi@php.net> Mon, 17 Nov 2014 06:53:38 +0100
Parents: 23fd22f9ede39c5885a332cf6e6f5785c5f3fcba
Branches: PHP-5.5 PHP-5.6 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=4657289e87e18bb8967d5a8b0163c772d410e2b8
Log:
Improve fix bug #68421 access.format='%R' doesn't log ipv6 address
Log IPv4-Mapped-Ipv6 address as IPv4 (not as IPv6)
Bugs:
https://bugs.php.net/68421
Changed paths:
M sapi/fpm/fpm/fastcgi.c
Diff:
diff --git a/sapi/fpm/fpm/fastcgi.c b/sapi/fpm/fpm/fastcgi.c
index 86fca17..d1db0ec 100644
--- a/sapi/fpm/fpm/fastcgi.c
+++ b/sapi/fpm/fpm/fastcgi.c
@@ -1099,13 +1099,23 @@ const char *fcgi_get_last_client_ip() /* {{{ */
{
static char str[INET6_ADDRSTRLEN];
- if (client_sa.sa.sa_family == AF_UNIX) {
- return NULL;
- }
+ /* Ipv4 */
if (client_sa..sa.sa_family == AF_INET) {
return inet_ntop(client_sa.sa.sa_family, &client_sa.sa_inet.sin_addr, str, INET6_ADDRSTRLEN);
}
- return inet_ntop(client_sa.sa.sa_family, &client_sa.sa_inet6.sin6_addr, str,
INET6_ADDRSTRLEN);
+#ifdef IN6_IS_ADDR_V4MAPPED
+ /* Ipv4-Mapped-Ipv6 */
+ if (client_sa.sa.sa_family == AF_INET6
+ && IN6_IS_ADDR_V4MAPPED(&client_sa.sa_inet6.sin6_addr)) {
+ return inet_ntop(AF_INET, ((char *)&client_sa.sa_inet6.sin6_addr)+12, str, INET6_ADDRSTRLEN);
+ }
+#endif
+ /* Ipv6 */
+ if (client_sa.sa.sa_family == AF_INET6) {
+ return inet_ntop(client_sa.sa.sa_family, &client_sa.sa_inet6.sin6_addr, str,
INET6_ADDRSTRLEN);
+ }
+ /* Unix socket */
+ return NULL;
}
/* }}} */
/*