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: | Remi Collet | 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;