]> granicus.if.org Git - php/commitdiff
MFB: Fixed bug #48131 (Don't try to bind ipv4 addresses to ipv6 ips via
authorIlia Alshanetsky <iliaa@php.net>
Mon, 4 May 2009 13:12:53 +0000 (13:12 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 4 May 2009 13:12:53 +0000 (13:12 +0000)
bindto)

main/network.c

index 13060f603e9be827ad3f8d3268a18e7327c456fe..873b464edd90cba133c3e90c171d087d249f987f 100644 (file)
@@ -792,9 +792,14 @@ php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short
                switch (sa->sa_family) {
 #if HAVE_GETADDRINFO && HAVE_IPV6
                        case AF_INET6:
-                               ((struct sockaddr_in6 *)sa)->sin6_family = sa->sa_family;
-                               ((struct sockaddr_in6 *)sa)->sin6_port = htons(port);
-                               socklen = sizeof(struct sockaddr_in6);
+                               if (strstr(bindto, ':')) {
+                                       ((struct sockaddr_in6 *)sa)->sin6_family = sa->sa_family;
+                                       ((struct sockaddr_in6 *)sa)->sin6_port = htons(port);
+                                       socklen = sizeof(struct sockaddr_in6);
+                               } else {
+                                       socklen = 0;
+                                       sa = NULL;
+                               }
                                break;
 #endif
                        case AF_INET: