summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.in9
-rw-r--r--ext/sockets/php_sockets.h5
-rw-r--r--ext/sockets/sockets.c1
-rw-r--r--main/network.c4
-rw-r--r--main/php_network.h12
5 files changed, 22 insertions, 9 deletions
diff --git a/configure.in b/configure.in
index 7104d0dd57..9bb88cf2dc 100644
--- a/configure.in
+++ b/configure.in
@@ -352,6 +352,15 @@ dnl Checks for types
AC_TYPE_SIZE_T
AC_TYPE_UID_T
+dnl Check for struct sockaddr_storage
+AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_sockaddr_storage,
+[AC_TRY_COMPILE([ #include <sys/types.h>
+#include <sys/socket.h>], [struct sockaddr_storage s; s],
+ ac_cv_sockaddr_storage=yes, ac_cv_sockaddr_storage=no)])
+if test "$ac_cv_sockaddr_storage" = yes; then
+ AC_DEFINE(HAVE_SOCKADDR_STORAGE,1,[Whether you have struct sockaddr_storage])
+fi
+
dnl Check for IPv6 support
AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
[AC_TRY_COMPILE([ #include <sys/types.h>
diff --git a/ext/sockets/php_sockets.h b/ext/sockets/php_sockets.h
index 4b1cf7de04..df8a6785cb 100644
--- a/ext/sockets/php_sockets.h
+++ b/ext/sockets/php_sockets.h
@@ -103,11 +103,6 @@ typedef struct {
} php_fd_set;
typedef struct {
- long family;
- char info[256];
-} php_sockaddr_storage;
-
-typedef struct {
zend_bool use_system_read;
} php_sockets_globals;
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 71263d16ed..11dd0fb59d 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -26,6 +26,7 @@
#endif
#include "php.h"
+#include "php_network.h"
#if HAVE_SOCKETS
diff --git a/main/network.c b/main/network.c
index 597bcb6901..5b23a09313 100644
--- a/main/network.c
+++ b/main/network.c
@@ -204,7 +204,7 @@ static int php_network_getaddresses(const char *host, struct sockaddr ***sal)
/* {{{ php_connect_nonb */
PHPAPI int php_connect_nonb(int sockfd,
- struct sockaddr *addr,
+ const struct sockaddr *addr,
socklen_t addrlen,
struct timeval *timeout)
{
@@ -284,7 +284,7 @@ ok:
* port, returns the created socket on success, else returns -1.
* timeout gives timeout in seconds, 0 means blocking mode.
*/
-int php_hostconnect(char *host, unsigned short port, int socktype, int timeout)
+int php_hostconnect(const char *host, unsigned short port, int socktype, int timeout)
{
int s;
struct sockaddr **sal, **psal;
diff --git a/main/php_network.h b/main/php_network.h
index d244160335..d95b72dd47 100644
--- a/main/php_network.h
+++ b/main/php_network.h
@@ -41,10 +41,18 @@
#include <sys/time.h>
#endif
+#ifdef HAVE_SOCKADDR_STORAGE
+typedef struct sockaddr_storage php_sockaddr_storage;
+#else
+typedef struct {
+ unsigned short ss_family;
+ char info[256];
+} php_sockaddr_storage;
+#endif
-int php_hostconnect(char *host, unsigned short port, int socktype, int timeout);
-PHPAPI int php_connect_nonb(int sockfd, struct sockaddr *addr, socklen_t addrlen, struct timeval *timeout);
+int php_hostconnect(const char *host, unsigned short port, int socktype, int timeout);
+PHPAPI int php_connect_nonb(int sockfd, const struct sockaddr *addr, socklen_t addrlen, struct timeval *timeout);
#endif /* _PHP_NETWORK_H */