diff options
author | Remi Collet <remi@php.net> | 2014-11-14 19:09:50 +0100 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2014-11-14 19:09:50 +0100 |
commit | 5112fdd670175f4eab4529c84ccf4774f5577797 (patch) | |
tree | 6a751c4deab01ca1624c7541c018a41ed79c18d4 | |
parent | 23db11976889c3600cf7853fe0fd687a1c9435e6 (diff) | |
download | php-git-5112fdd670175f4eab4529c84ccf4774f5577797.tar.gz |
Fix bug #68421 access.format='%R' doesn't log ipv6 address
-rw-r--r-- | sapi/fpm/fpm/fastcgi.c | 10 | ||||
-rw-r--r-- | sapi/fpm/fpm/fastcgi.h | 2 | ||||
-rw-r--r-- | sapi/fpm/fpm/fpm_log.c | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/sapi/fpm/fpm/fastcgi.c b/sapi/fpm/fpm/fastcgi.c index d77b6f8ca7..86fca17c5f 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 34f9eef9da..f5cfe9f66a 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 4e1a057db1..c71281b0b9 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; |