summaryrefslogtreecommitdiffstats
path: root/php-bug68421.patch
diff options
context:
space:
mode:
Diffstat (limited to 'php-bug68421.patch')
-rw-r--r--php-bug68421.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/php-bug68421.patch b/php-bug68421.patch
new file mode 100644
index 0000000..0f59efd
--- /dev/null
+++ b/php-bug68421.patch
@@ -0,0 +1,72 @@
+From 5112fdd670175f4eab4529c84ccf4774f5577797 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Fri, 14 Nov 2014 19:09:50 +0100
+Subject: [PATCH] Fix bug #68421 access.format='%R' doesn't log ipv6 address
+
+---
+ sapi/fpm/fpm/fastcgi.c | 10 ++++++++--
+ sapi/fpm/fpm/fastcgi.h | 2 +-
+ 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 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;
+--
+2.1.0
+