From: Anatol Belski Date: Mon, 10 Nov 2014 17:16:31 +0000 (+0100) Subject: do portable socket checks X-Git-Tag: PRE_NATIVE_TLS_MERGE~130^2~31 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=88ba5a625c7efb1001ce90c8f4649cff830d82a4;p=php do portable socket checks also introduced a portable macro for that --- diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h index a6dac42b5a..f056b16338 100644 --- a/Zend/zend_portability.h +++ b/Zend/zend_portability.h @@ -394,6 +394,12 @@ char *alloca(); #define ZEND_SECURE_ZERO(var, size) memset((var), 0, (size)) #endif +#ifdef ZEND_WIN32 +#define ZEND_VALID_SOCKET(sock) (INVALID_SOCKET != (sock)) +#else +#define ZEND_VALID_SOCKET(sock) ((sock) >= 0) +#endif + #endif /* ZEND_PORTABILITY_H */ /* diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 19a94218ff..20e27f0bb7 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -556,7 +556,7 @@ static void sapi_cli_server_flush(void *server_context TSRMLS_DC) /* {{{ */ return; } - if (client->sock < 0) { + if (!ZEND_VALID_SOCKET(client->sock)) { php_handle_aborted_connection(); return; } @@ -1338,7 +1338,7 @@ out: php_network_freeaddresses(sal); } if (err) { - if (retval >= 0) { + if (ZEND_VALID_SOCKET(retval)) { closesocket(retval); } if (errstr) { @@ -2186,7 +2186,7 @@ static void php_cli_server_dtor(php_cli_server *server TSRMLS_DC) /* {{{ */ { zend_hash_destroy(&server->clients); zend_hash_destroy(&server->extension_mime_types); - if (server->server_sock >= 0) { + if (ZEND_VALID_SOCKET(server->server_sock)) { closesocket(server->server_sock); } if (server->host) { @@ -2407,7 +2407,7 @@ static int php_cli_server_do_event_for_each_fd_callback(void *_params, php_socke return FAILURE; } client_sock = accept(server->server_sock, sa, &socklen); - if (client_sock < 0) { + if (!ZEND_VALID_SOCKET(client_sock)) { char *errstr; errstr = php_socket_strerror(php_socket_errno(), NULL, 0); php_cli_server_logf("Failed to accept a client (reason: %s)" TSRMLS_CC, errstr);