summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/network.c26
-rw-r--r--main/php_network.h23
-rw-r--r--main/streams/xp_socket.c8
3 files changed, 34 insertions, 23 deletions
diff --git a/main/network.c b/main/network.c
index f04447745a..eee8530ac7 100644
--- a/main/network.c
+++ b/main/network.c
@@ -280,7 +280,7 @@ typedef int php_non_blocking_flags_t;
* enable non-blocking mode on the socket.
* */
/* {{{ php_network_connect_socket */
-PHPAPI int php_network_connect_socket(int sockfd,
+PHPAPI int php_network_connect_socket(php_socket_t sockfd,
const struct sockaddr *addr,
socklen_t addrlen,
int asynchronous,
@@ -341,7 +341,7 @@ PHPAPI int php_network_connect_socket(int sockfd,
BSD-derived systems set errno correctly
Solaris returns -1 from getsockopt in case of error
*/
- if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
+ if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, (char*)&error, &len) < 0) {
ret = -1;
}
} else {
@@ -393,11 +393,12 @@ static inline void sub_times(struct timeval a, struct timeval b, struct timeval
* Returns the bound socket, or -1 on failure.
* */
/* {{{ php_network_bind_socket_to_local_addr */
-int php_network_bind_socket_to_local_addr(const char *host, unsigned port,
+php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned port,
int socktype, char **error_string, int *error_code
TSRMLS_DC)
{
- int num_addrs, sock, n, err = 0;
+ int num_addrs, n, err = 0;
+ php_socket_t sock;
struct sockaddr **sal, **psal, *sa;
socklen_t socklen;
@@ -442,7 +443,7 @@ int php_network_bind_socket_to_local_addr(const char *host, unsigned port,
#ifdef SO_REUSEADDR
{
int val = 1;
- setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&val, sizeof(val));
}
#endif
@@ -543,7 +544,7 @@ static void populate_name(
}
}
-PHPAPI int php_network_get_peer_name(int sock,
+PHPAPI int php_network_get_peer_name(php_socket_t sock,
char **textaddr, long *textaddrlen,
struct sockaddr **addr,
socklen_t *addrlen
@@ -562,7 +563,7 @@ PHPAPI int php_network_get_peer_name(int sock,
return -1;
}
-PHPAPI int php_network_get_sock_name(int sock,
+PHPAPI int php_network_get_sock_name(php_socket_t sock,
char **textaddr, long *textaddrlen,
struct sockaddr **addr,
socklen_t *addrlen
@@ -592,7 +593,7 @@ PHPAPI int php_network_get_sock_name(int sock,
* */
/* {{{ php_network_accept_incoming */
-PHPAPI int php_network_accept_incoming(int srvsock,
+PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock,
char **textaddr, long *textaddrlen,
struct sockaddr **addr,
socklen_t *addrlen,
@@ -601,7 +602,7 @@ PHPAPI int php_network_accept_incoming(int srvsock,
int *error_code
TSRMLS_DC)
{
- int clisock = -1;
+ php_socket_t clisock = -1;
fd_set rset;
int error, n;
php_sockaddr_storage sa;
@@ -651,12 +652,13 @@ PHPAPI int php_network_accept_incoming(int srvsock,
* */
/* {{{ php_network_connect_socket_to_host */
-int php_network_connect_socket_to_host(const char *host, unsigned short port,
+php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short port,
int socktype, int asynchronous, struct timeval *timeout, char **error_string,
int *error_code
TSRMLS_DC)
{
- int num_addrs, sock, n, fatal = 0;
+ int num_addrs, n, fatal = 0;
+ php_socket_t sock;
struct sockaddr **sal, **psal, *sa;
struct timeval working_timeout;
socklen_t socklen;
@@ -865,7 +867,7 @@ PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize)
/* }}} */
/* deprecated */
-PHPAPI php_stream *_php_stream_sock_open_from_socket(int socket, const char *persistent_id STREAMS_DC TSRMLS_DC)
+PHPAPI php_stream *_php_stream_sock_open_from_socket(php_socket_t socket, const char *persistent_id STREAMS_DC TSRMLS_DC)
{
php_stream *stream;
php_netstream_data_t *sock;
diff --git a/main/php_network.h b/main/php_network.h
index 3439964353..d0bb26e7f6 100644
--- a/main/php_network.h
+++ b/main/php_network.h
@@ -81,6 +81,12 @@ PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize);
#endif
#ifdef PHP_WIN32
+typedef SOCKET php_socket_t;
+#else
+typedef int php_socket_t;
+#endif
+
+#ifdef PHP_WIN32
# define SOCK_ERR INVALID_SOCKET
# define SOCK_CONN_ERR SOCKET_ERROR
# define SOCK_RECV_ERR SOCKET_ERROR
@@ -106,12 +112,12 @@ typedef struct {
} php_sockaddr_storage;
#endif
-PHPAPI int php_network_connect_socket_to_host(const char *host, unsigned short port,
+PHPAPI php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short port,
int socktype, int asynchronous, struct timeval *timeout, char **error_string,
int *error_code
TSRMLS_DC);
-PHPAPI int php_network_connect_socket(int sockfd,
+PHPAPI int php_network_connect_socket(php_socket_t sockfd,
const struct sockaddr *addr,
socklen_t addrlen,
int asynchronous,
@@ -122,11 +128,11 @@ PHPAPI int php_network_connect_socket(int sockfd,
#define php_connect_nonb(sock, addr, addrlen, timeout) \
php_network_connect_socket((sock), (addr), (addrlen), 0, (timeout), NULL, NULL)
-PHPAPI int php_network_bind_socket_to_local_addr(const char *host, unsigned port,
+PHPAPI php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned port,
int socktype, char **error_string, int *error_code
TSRMLS_DC);
-PHPAPI int php_network_accept_incoming(int srvsock,
+PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock,
char **textaddr, long *textaddrlen,
struct sockaddr **addr,
socklen_t *addrlen,
@@ -135,13 +141,13 @@ PHPAPI int php_network_accept_incoming(int srvsock,
int *error_code
TSRMLS_DC);
-PHPAPI int php_network_get_sock_name(int sock,
+PHPAPI int php_network_get_sock_name(php_socket_t sock,
char **textaddr, long *textaddrlen,
struct sockaddr **addr,
socklen_t *addrlen
TSRMLS_DC);
-PHPAPI int php_network_get_peer_name(int sock,
+PHPAPI int php_network_get_peer_name(php_socket_t sock,
char **textaddr, long *textaddrlen,
struct sockaddr **addr,
socklen_t *addrlen
@@ -150,8 +156,9 @@ PHPAPI int php_network_get_peer_name(int sock,
void php_any_addr(int family, php_sockaddr_storage *addr, unsigned short port);
int php_sockaddr_size(php_sockaddr_storage *addr);
+
struct _php_netstream_data_t {
- int socket;
+ php_socket_t socket;
char is_blocked;
struct timeval timeout;
char timeout_event;
@@ -162,7 +169,7 @@ extern php_stream_ops php_stream_socket_ops;
extern php_stream_ops php_stream_generic_socket_ops;
#define PHP_STREAM_IS_SOCKET (&php_stream_socket_ops)
-PHPAPI php_stream *_php_stream_sock_open_from_socket(int socket, const char *persistent_id STREAMS_DC TSRMLS_DC );
+PHPAPI php_stream *_php_stream_sock_open_from_socket(php_socket_t socket, const char *persistent_id STREAMS_DC TSRMLS_DC );
/* open a connection to a host using php_hostconnect and return a stream */
PHPAPI php_stream *_php_stream_sock_open_host(const char *host, unsigned short port,
int socktype, struct timeval *timeout, const char *persistent_id STREAMS_DC TSRMLS_DC);
diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c
index c2547bd7d3..58e9e28a7c 100644
--- a/main/streams/xp_socket.c
+++ b/main/streams/xp_socket.c
@@ -422,7 +422,8 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_
php_stream_xport_param *xparam TSRMLS_DC)
{
char *host = NULL;
- int portno, err;
+ int portno;
+ int err;
int ret;
#ifdef AF_UNIX
@@ -441,7 +442,7 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_
parse_unix_address(xparam, &unix_addr TSRMLS_CC);
ret = php_network_connect_socket(sock->socket,
- (const struct sockaddr *)&unix_addr, sizeof(unix_addr),
+ (const struct sockaddr *)&unix_addr, (socklen_t)sizeof(unix_addr),
xparam->op == STREAM_XPORT_OP_CONNECT_ASYNC, xparam->inputs.timeout,
xparam->want_errortext ? &xparam->outputs.error_text : NULL,
&err);
@@ -465,7 +466,8 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_
sock->socket = php_network_connect_socket_to_host(host, portno,
stream->ops == &php_stream_udp_socket_ops ? SOCK_DGRAM : SOCK_STREAM,
xparam->op == STREAM_XPORT_OP_CONNECT_ASYNC,
- xparam->inputs.timeout, xparam->want_errortext ? &xparam->outputs.error_text : NULL,
+ xparam->inputs.timeout,
+ xparam->want_errortext ? &xparam->outputs.error_text : NULL,
&err
TSRMLS_CC);