cvs: php-src(PHP_5_3) /main network.c
| From: | Ilia Alshanetsky | Date: | Mon, 04 May 2009 13:09:15 +0000 |
| Subject: | cvs: php-src(PHP_5_3) /main network.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-57565@lists.php.net to get a copy of this message | ||
iliaa Mon May 4 13:09:15 2009 UTC
Modified files: (Branch: PHP_5_3)
/php-src/main network.c
Log:
Fixed bug #48131 (Don't try to bind ipv4 addresses to ipv6 ips via bindto)
http://cvs.php.net/viewvc.cgi/php-src/main/network.c?r1=1.118.2.2.2.6.2.14&r2=1.118.2.2.2.6.2.15&diff_format=u
Index: php-src/main/network.c
diff -u php-src/main/network.c:1.118.2.2.2.6.2.14 php-src/main/network.c:1.118.2.2.2.6.2.15
--- php-src/main/network.c:1.118.2.2.2.6.2.14 Sat Jan 3 00:06:33 2009
+++ php-src/main/network.c Mon May 4 13:09:15 2009
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: network.c,v 1.118.2.2.2.6.2.14 2009/01/03 00:06:33 felipe Exp $ */
+/* $Id: network.c,v 1.118.2.2.2.6.2.15 2009/05/04 13:09:15 iliaa Exp $ */
/*#define DEBUG_MAIN_NETWORK 1*/
@@ -792,9 +792,14 @@
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:
@@ -814,7 +819,7 @@
if (bindto) {
struct sockaddr *local_address = NULL;
int local_address_len = 0;
-
+
if (sa->sa_family == AF_INET) {
struct sockaddr_in *in4 = emalloc(sizeof(struct sockaddr_in));