]> granicus.if.org Git - php/commitdiff
do portable socket checks
authorAnatol Belski <ab@php.net>
Mon, 10 Nov 2014 17:16:31 +0000 (18:16 +0100)
committerAnatol Belski <ab@php.net>
Mon, 10 Nov 2014 22:30:12 +0000 (23:30 +0100)
also introduced a portable macro for that

Zend/zend_portability.h
sapi/cli/php_cli_server.c

index a6dac42b5a291adc3fadb2fc443de0b5f94e8993..f056b163388759d1430eb8cec01e6e581aaf4e61 100644 (file)
@@ -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 */
 
 /*
index 19a94218ff856178d135547f22280fadaa82438b..20e27f0bb76169eca15da77b72575560f9a37a3e 100644 (file)
@@ -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);