com php-src: Fix bug #68421 access.format='%R' does n't log ipv6 address: sapi/fpm/fpm/fastcgi.c sapi/fpm/fpm/fastcgi.h sapi/fpm/fpm/fpm_log.c

From: Date: Fri, 14 Nov 2014 18:09:50 +0000
Subject: com php-src: Fix bug #68421 access.format='%R' does n't log ipv6 address: sapi/fpm/fpm/fastcgi.c sapi/fpm/fpm/fastcgi.h sapi/fpm/fpm/fpm_log.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-83099@lists.php.net to get a copy of this message
Commit: 5112fdd670175f4eab4529c84ccf4774f5577797 Author: Remi Collet <remi@php.net> Fri, 14 Nov 2014 19:09:50 +0100 Parents: 23db11976889c3600cf7853fe0fd687a1c9435e6 Branches: PHP-5.5 PHP-5.6 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=5112fdd670175f4eab4529c84ccf4774f5577797 Log: Fix bug #68421 access.format='%R' doesn't log ipv6 address Bugs: https://bugs.php.net/68421 Changed paths: M sapi/fpm/fpm/fastcgi.c M sapi/fpm/fpm/fastcgi.h M sapi/fpm/fpm/fpm_log.c Diff: diff --git a/sapi/fpm/fpm/fastcgi.c b/sapi/fpm/fpm/fastcgi.c index d77b6f8..86fca17 100644 --- a/sapi/fpm/fpm/fastcgi.c +++ b/sapi/fpm/fpm/fastcgi.c @@ -137,6 +137,7 @@ typedef union _sa_t { struct sockaddr sa; struct sockaddr_un sa_unix; struct sockaddr_in sa_inet; + struct sockaddr_in6 sa_inet6; } sa_t; static HashTable fcgi_mgmt_vars; @@ -1094,12 +1095,17 @@ void fcgi_free_mgmt_var_cb(void * ptr) pefree(*var, 1); } -char *fcgi_get_last_client_ip() /* {{{ */ +const char *fcgi_get_last_client_ip() /* {{{ */ { + static char str[INET6_ADDRSTRLEN]; + if (client_sa.sa.sa_family == AF_UNIX) { return NULL; } - return inet_ntoa(client_sa.sa_inet.sin_addr); + 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); } /* }}} */ /* diff --git a/sapi/fpm/fpm/fastcgi.h b/sapi/fpm/fpm/fastcgi.h index 34f9eef..f5cfe9f 100644 --- a/sapi/fpm/fpm/fastcgi.h +++ b/sapi/fpm/fpm/fastcgi.h @@ -133,7 +133,7 @@ int fcgi_flush(fcgi_request *req, int close); void fcgi_set_mgmt_var(const char * name, size_t name_len, const char * value, size_t value_len); void fcgi_free_mgmt_var_cb(void * ptr); -char *fcgi_get_last_client_ip(); +const char *fcgi_get_last_client_ip(); /* * Local variables: diff --git a/sapi/fpm/fpm/fpm_log.c b/sapi/fpm/fpm/fpm_log.c index 4e1a057..c71281b 100644 --- a/sapi/fpm/fpm/fpm_log.c +++ b/sapi/fpm/fpm/fpm_log.c @@ -367,7 +367,7 @@ int fpm_log_write(char *log_format TSRMLS_DC) /* {{{ */ case 'R': /* remote IP address */ if (!test) { - char *tmp = fcgi_get_last_client_ip(); + const char *tmp = fcgi_get_last_client_ip(); len2 = snprintf(b, FPM_LOG_BUFFER - len, "%s", tmp ? tmp : "-"); } break;

« previous php.cvs (#83099) next »