mirror of
https://github.com/php/php-src.git
synced 2026-04-27 10:16:41 +02:00
- WS
This commit is contained in:
+30
-30
@@ -125,7 +125,7 @@ static const char *php_gai_strerror(int code)
|
||||
{EAI_MEMORY, "Memory allocation failure"},
|
||||
# ifdef EAI_NODATA
|
||||
{EAI_NODATA, "No address associated with hostname"},
|
||||
# endif
|
||||
# endif
|
||||
{EAI_NONAME, "Name or service not known"},
|
||||
{EAI_SERVICE, "Servname not supported for ai_socktype"},
|
||||
{EAI_SOCKTYPE, "ai_socktype not supported"},
|
||||
@@ -139,7 +139,7 @@ static const char *php_gai_strerror(int code)
|
||||
return (char *)values[i].msg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return "Unknown error";
|
||||
}
|
||||
/* }}} */
|
||||
@@ -182,10 +182,10 @@ static int php_network_getaddresses(const char *host, int socktype, struct socka
|
||||
}
|
||||
#if HAVE_GETADDRINFO
|
||||
memset(&hints, '\0', sizeof(hints));
|
||||
|
||||
|
||||
hints.ai_family = AF_INET; /* default to regular inet (see below) */
|
||||
hints.ai_socktype = socktype;
|
||||
|
||||
|
||||
# if HAVE_IPV6
|
||||
/* probe for a working IPv6 stack; even if detected as having v6 at compile
|
||||
* time, at runtime some stacks are slow to resolve or have other issues
|
||||
@@ -228,17 +228,17 @@ static int php_network_getaddresses(const char *host, int socktype, struct socka
|
||||
sai = res;
|
||||
for (n = 1; (sai = sai->ai_next) != NULL; n++)
|
||||
;
|
||||
|
||||
|
||||
*sal = safe_emalloc((n + 1), sizeof(*sal), 0);
|
||||
sai = res;
|
||||
sap = *sal;
|
||||
|
||||
|
||||
do {
|
||||
*sap = emalloc(sai->ai_addrlen);
|
||||
memcpy(*sap, sai->ai_addr, sai->ai_addrlen);
|
||||
sap++;
|
||||
} while ((sai = sai->ai_next) != NULL);
|
||||
|
||||
|
||||
freeaddrinfo(res);
|
||||
#else
|
||||
if (!inet_aton(host, &in)) {
|
||||
@@ -313,7 +313,7 @@ PHPAPI int php_network_connect_socket(php_socket_t sockfd,
|
||||
int ret = 0;
|
||||
|
||||
SET_SOCKET_BLOCKING_MODE(sockfd, orig_flags);
|
||||
|
||||
|
||||
if ((n = connect(sockfd, addr, addrlen)) != 0) {
|
||||
error = php_socket_errno();
|
||||
|
||||
@@ -459,14 +459,14 @@ php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned po
|
||||
|
||||
if (sa) {
|
||||
/* attempt to bind */
|
||||
|
||||
|
||||
#ifdef SO_REUSEADDR
|
||||
{
|
||||
int val = 1;
|
||||
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&val, sizeof(val));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
n = bind(sock, sa, socklen);
|
||||
|
||||
if (n != SOCK_CONN_ERR) {
|
||||
@@ -486,13 +486,13 @@ php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned po
|
||||
if (error_string) {
|
||||
*error_string = php_socket_strerror(err, NULL, 0);
|
||||
}
|
||||
|
||||
|
||||
bound:
|
||||
|
||||
php_network_freeaddresses(psal);
|
||||
|
||||
|
||||
return sock;
|
||||
|
||||
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -610,7 +610,7 @@ PHPAPI void php_network_populate_name_from_sockaddr(
|
||||
/* generally not thread safe, but it *is* thread safe under win32 */
|
||||
buf = inet_ntoa(((struct sockaddr_in*)sa)->sin_addr);
|
||||
if (buf) {
|
||||
*textaddrlen = spprintf(textaddr, 0, "%s:%d",
|
||||
*textaddrlen = spprintf(textaddr, 0, "%s:%d",
|
||||
buf, ntohs(((struct sockaddr_in*)sa)->sin_port));
|
||||
}
|
||||
|
||||
@@ -620,7 +620,7 @@ PHPAPI void php_network_populate_name_from_sockaddr(
|
||||
case AF_INET6:
|
||||
buf = (char*)inet_ntop(sa->sa_family, &((struct sockaddr_in6*)sa)->sin6_addr, (char *)&abuf, sizeof(abuf));
|
||||
if (buf) {
|
||||
*textaddrlen = spprintf(textaddr, 0, "%s:%d",
|
||||
*textaddrlen = spprintf(textaddr, 0, "%s:%d",
|
||||
buf, ntohs(((struct sockaddr_in6*)sa)->sin6_port));
|
||||
}
|
||||
|
||||
@@ -651,7 +651,7 @@ PHPAPI void php_network_populate_name_from_sockaddr(
|
||||
}
|
||||
}
|
||||
|
||||
PHPAPI int php_network_get_peer_name(php_socket_t sock,
|
||||
PHPAPI int php_network_get_peer_name(php_socket_t sock,
|
||||
char **textaddr, long *textaddrlen,
|
||||
struct sockaddr **addr,
|
||||
socklen_t *addrlen
|
||||
@@ -660,7 +660,7 @@ PHPAPI int php_network_get_peer_name(php_socket_t sock,
|
||||
php_sockaddr_storage sa;
|
||||
socklen_t sl = sizeof(sa);
|
||||
memset(&sa, 0, sizeof(sa));
|
||||
|
||||
|
||||
if (getpeername(sock, (struct sockaddr*)&sa, &sl) == 0) {
|
||||
php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl,
|
||||
textaddr, textaddrlen,
|
||||
@@ -671,7 +671,7 @@ PHPAPI int php_network_get_peer_name(php_socket_t sock,
|
||||
return -1;
|
||||
}
|
||||
|
||||
PHPAPI int php_network_get_sock_name(php_socket_t sock,
|
||||
PHPAPI int php_network_get_sock_name(php_socket_t sock,
|
||||
char **textaddr, long *textaddrlen,
|
||||
struct sockaddr **addr,
|
||||
socklen_t *addrlen
|
||||
@@ -680,7 +680,7 @@ PHPAPI int php_network_get_sock_name(php_socket_t sock,
|
||||
php_sockaddr_storage sa;
|
||||
socklen_t sl = sizeof(sa);
|
||||
memset(&sa, 0, sizeof(sa));
|
||||
|
||||
|
||||
if (getsockname(sock, (struct sockaddr*)&sa, &sl) == 0) {
|
||||
php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl,
|
||||
textaddr, textaddrlen,
|
||||
@@ -715,7 +715,7 @@ PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock,
|
||||
int error = 0, n;
|
||||
php_sockaddr_storage sa;
|
||||
socklen_t sl;
|
||||
|
||||
|
||||
n = php_pollfd_for(srvsock, PHP_POLLREADABLE, timeout);
|
||||
|
||||
if (n == 0) {
|
||||
@@ -736,18 +736,18 @@ PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock,
|
||||
error = php_socket_errno();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (error_code) {
|
||||
*error_code = error;
|
||||
}
|
||||
if (error_string) {
|
||||
*error_string = php_socket_strerror(error, NULL, 0);
|
||||
}
|
||||
|
||||
|
||||
return clisock;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
|
||||
|
||||
/* Connect to a remote host using an interruptible connect with optional timeout.
|
||||
@@ -759,7 +759,7 @@ PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock,
|
||||
/* {{{ php_network_connect_socket_to_host */
|
||||
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, char *bindto, unsigned short bindport
|
||||
int *error_code, char *bindto, unsigned short bindport
|
||||
TSRMLS_DC)
|
||||
{
|
||||
int num_addrs, n, fatal = 0;
|
||||
@@ -837,7 +837,7 @@ php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short
|
||||
|
||||
local_address = (struct sockaddr*)in4;
|
||||
local_address_len = sizeof(struct sockaddr_in);
|
||||
|
||||
|
||||
in4->sin_family = sa->sa_family;
|
||||
in4->sin_port = htons(bindport);
|
||||
if (!inet_aton(bindto, &in4->sin_addr)) {
|
||||
@@ -852,7 +852,7 @@ php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short
|
||||
|
||||
local_address = (struct sockaddr*)in6;
|
||||
local_address_len = sizeof(struct sockaddr_in6);
|
||||
|
||||
|
||||
in6->sin6_family = sa->sa_family;
|
||||
in6->sin6_port = htons(bindport);
|
||||
if (inet_pton(AF_INET6, bindto, &in6->sin6_addr) < 1) {
|
||||
@@ -874,7 +874,7 @@ skip_bind:
|
||||
efree(*error_string);
|
||||
*error_string = NULL;
|
||||
}
|
||||
|
||||
|
||||
n = php_network_connect_socket(sock, sa, socklen, asynchronous,
|
||||
timeout ? &working_timeout : NULL,
|
||||
error_string, error_code);
|
||||
@@ -919,7 +919,7 @@ skip_bind:
|
||||
connected:
|
||||
|
||||
php_network_freeaddresses(psal);
|
||||
|
||||
|
||||
return sock;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -996,7 +996,7 @@ PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize)
|
||||
int free_it = 1;
|
||||
|
||||
if (!FormatMessage(
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
@@ -1077,7 +1077,7 @@ PHPAPI int php_set_sock_blocking(int socketd, int block TSRMLS_DC)
|
||||
flags = !block;
|
||||
if (ioctlsocket(socketd, FIONBIO, &flags) == SOCKET_ERROR) {
|
||||
char *error_string;
|
||||
|
||||
|
||||
error_string = php_socket_strerror(WSAGetLastError(), NULL, 0);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", error_string);
|
||||
efree(error_string);
|
||||
|
||||
Reference in New Issue
Block a user