]> granicus.if.org Git - php/commitdiff
Fix for #19508 by poleson@verio.net.
authorWez Furlong <wez@php.net>
Tue, 29 Oct 2002 14:57:12 +0000 (14:57 +0000)
committerWez Furlong <wez@php.net>
Tue, 29 Oct 2002 14:57:12 +0000 (14:57 +0000)
configure.in
main/network.c
main/php_network.h

index 5909d3f28a6c0b24c61a7df67aeca6825f4bc81d..718dec53d2e3543c670761c58f86cf40ae72c10b 100644 (file)
@@ -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 <sys/types.h>
+#include <sys/socket.h>
+])
+
 dnl Check for IPv6 support
 AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
 [AC_TRY_LINK([ #include <sys/types.h>
index 893dbf882578caff5a5df9d03a7848316931f3fe..97b6c57f2d031977cff0b99b7fee02e48bd8a074 100644 (file)
@@ -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;
        }
        }
index 8223013376457777df64e83f1e562dae5a7049eb..49c4553dea7282a99ca26aa70295720abb27b01c 100644 (file)
@@ -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