]> granicus.if.org Git - php/commitdiff
FPM: change "listen = port" behavior from IPv4 catch-all to IPv6 catch-all (+ IPv4...
authorRemi Collet <remi@php.net>
Mon, 24 Nov 2014 08:38:36 +0000 (09:38 +0100)
committerRemi Collet <remi@php.net>
Mon, 24 Nov 2014 08:38:36 +0000 (09:38 +0100)
UPGRADING
sapi/fpm/fpm/fpm_sockets.c
sapi/fpm/php-fpm.conf.in

index fe282138d1096625e764e391058fbae528f45a43..9d5d8e72284ee92efcfff3c76818368e052fb04f 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -63,6 +63,7 @@ PHP X.Y UPGRADE NOTES
 
 - FPM
   . Fixed bug #65933 (Cannot specify config lines longer than 1024 bytes).
+  . Listen = port now listen on all addresses (IPv6 and IPv4-mapped).
 
 ========================================
 4. Deprecated Functionality
index 0286f0eee8d1b47b3cafac1fbc80e2fa624f0a6b..e4e494876f5d0ea4d6f9acb86b12c28627f4e955 100644 (file)
@@ -268,6 +268,8 @@ static int fpm_socket_af_inet_listening_socket(struct fpm_worker_pool_s *wp) /*
        } else if (strlen(dup_address) == strspn(dup_address, "0123456789")) { /* this is port */
                port = atoi(dup_address);
                port_str = dup_address;
+               /* IPv6 catch-all + IPv4-mapped */
+               addr = "::";
        }
 
        if (port == 0) {
@@ -275,18 +277,6 @@ static int fpm_socket_af_inet_listening_socket(struct fpm_worker_pool_s *wp) /*
                return -1;
        }
 
-       if (!addr) {
-               /* no address: default documented behavior, all IPv4 addresses */
-               struct sockaddr_in sa_in;
-
-               memset(&sa_in, 0, sizeof(sa_in));
-               sa_in.sin_family = AF_INET;
-               sa_in.sin_port = htons(port);
-               sa_in.sin_addr.s_addr = htonl(INADDR_ANY);
-               free(dup_address);
-               return fpm_sockets_get_listening_socket(wp, (struct sockaddr *) &sa_in, sizeof(struct sockaddr_in));
-       }
-
        /* strip brackets from address for getaddrinfo */
        addr_len = strlen(addr);
        if (addr[0] == '[' && addr[addr_len - 1] == ']') {
@@ -307,10 +297,10 @@ static int fpm_socket_af_inet_listening_socket(struct fpm_worker_pool_s *wp) /*
                inet_ntop(p->ai_family, fpm_get_in_addr(p->ai_addr), tmpbuf, INET6_ADDRSTRLEN);
                if (sock < 0) {
                        if ((sock = fpm_sockets_get_listening_socket(wp, p->ai_addr, p->ai_addrlen)) != -1) {
-                               zlog(ZLOG_DEBUG, "Found address for %s, socket opened on %s", dup_address, tmpbuf);
+                               zlog(ZLOG_DEBUG, "Found address for %s, socket opened on %s", addr, tmpbuf);
                        }
                } else {
-                       zlog(ZLOG_WARNING, "Found multiple addresses for %s, %s ignored", dup_address, tmpbuf);
+                       zlog(ZLOG_WARNING, "Found multiple addresses for %s, %s ignored", addr, tmpbuf);
                }
        }
 
index b2d8a225364afb9c6372a5d847e25eb9a3f4308f..850a3690024c70230753f2f31c1d10725413dbd0 100644 (file)
@@ -155,9 +155,7 @@ group = @php_fpm_group@
 ;                            a specific port;
 ;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
 ;                            a specific port;
-;   'port'                 - to listen on a TCP socket to all IPv4 addresses on a
-;                            specific port;
-;   '[::]:port'            - to listen on a TCP socket to all addresses
+;   'port'                 - to listen on a TCP socket to all addresses
 ;                            (IPv6 and IPv4-mapped) on a specific port;
 ;   '/path/to/unix/socket' - to listen on a unix socket.
 ; Note: This value is mandatory.