From: Wez Furlong Date: Tue, 29 Oct 2002 14:57:12 +0000 (+0000) Subject: Fix for #19508 by poleson@verio.net. X-Git-Tag: php-4.3.0RC1~453 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f8486bc344caf6cc5d5f823a4d60bdfc136e5a04;p=php Fix for #19508 by poleson@verio.net. --- diff --git a/configure.in b/configure.in index 5909d3f28a..718dec53d2 100644 --- a/configure.in +++ b/configure.in @@ -409,6 +409,15 @@ if test "$ac_cv_sockaddr_storage" = yes; then AC_DEFINE(HAVE_SOCKADDR_STORAGE,1,[Whether you have struct sockaddr_storage]) fi +dnl Check if sockaddr data structure includes an "sa_len" member +AC_CHECK_MEMBER([struct sockaddr.sa_len], + [AC_DEFINE(HAVE_SOCKADDR_LEN,1,[Whether sockaddr struct has sa_len])], + [], +[ +#include +#include +]) + dnl Check for IPv6 support AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support, [AC_TRY_LINK([ #include diff --git a/main/network.c b/main/network.c index 893dbf8825..97b6c57f2d 100644 --- a/main/network.c +++ b/main/network.c @@ -504,7 +504,7 @@ void php_any_addr(int family, php_sockaddr_storage *addr, unsigned short port) struct sockaddr_in *sin = (struct sockaddr_in *) addr; sin->sin_family = AF_INET; sin->sin_port = htons(port); - sin->sin_addr.s_addr = INADDR_ANY; + sin->sin_addr.s_addr = htonl(INADDR_ANY); break; } } diff --git a/main/php_network.h b/main/php_network.h index 8223013376..49c4553dea 100644 --- a/main/php_network.h +++ b/main/php_network.h @@ -98,8 +98,13 @@ PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize); typedef struct sockaddr_storage php_sockaddr_storage; #else typedef struct { +#ifdef HAVE_SOCKADDR_LEN + unsigned char ss_len; + unsigned char ss_family; +#else unsigned short ss_family; - char info[256]; +#endif + char info[126]; } php_sockaddr_storage; #endif