mike                                     Thu, 11 Mar 2010 16:37:24 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=296079

Log:
add backlock socket context option for stream_socket_server(),
which had a hardcoded backlog of 5 at two occurrances

Changed paths:
    U   php/php-src/branches/PHP_5_3/main/streams/transports.c
    U   php/php-src/branches/PHP_5_3/main/streams/xp_socket.c
    U   php/php-src/trunk/main/streams/transports.c
    U   php/php-src/trunk/main/streams/xp_socket.c

Modified: php/php-src/branches/PHP_5_3/main/streams/transports.c
===================================================================
--- php/php-src/branches/PHP_5_3/main/streams/transports.c      2010-03-11 
16:19:43 UTC (rev 296078)
+++ php/php-src/branches/PHP_5_3/main/streams/transports.c      2010-03-11 
16:37:24 UTC (rev 296079)
@@ -157,7 +157,20 @@
                                        ERR_RETURN(error_string, error_text, 
"bind() failed: %s");
                                        failed = 1;
                                } else if (flags & STREAM_XPORT_LISTEN) {
-                                       if (0 != 
php_stream_xport_listen(stream, 5, &error_text TSRMLS_CC)) {
+                                       zval **zbacklog = NULL;
+                                       int backlog = 32;
+
+                                       if (stream->context && 
php_stream_context_get_option(stream->context, "socket", "backlog", &zbacklog) 
== SUCCESS) {
+                                               zval *ztmp = *zbacklog;
+
+                                               convert_to_long_ex(&ztmp);
+                                               backlog = Z_LVAL_P(ztmp);
+                                               if (ztmp != *zbacklog) {
+                                                       zval_ptr_dtor(&ztmp);
+                                               }
+                                       }
+
+                                       if (0 != 
php_stream_xport_listen(stream, backlog, &error_text TSRMLS_CC)) {
                                                ERR_RETURN(error_string, 
error_text, "listen() failed: %s");
                                                failed = 1;
                                        }

Modified: php/php-src/branches/PHP_5_3/main/streams/xp_socket.c
===================================================================
--- php/php-src/branches/PHP_5_3/main/streams/xp_socket.c       2010-03-11 
16:19:43 UTC (rev 296078)
+++ php/php-src/branches/PHP_5_3/main/streams/xp_socket.c       2010-03-11 
16:37:24 UTC (rev 296079)
@@ -324,7 +324,7 @@

                        switch (xparam->op) {
                                case STREAM_XPORT_OP_LISTEN:
-                                       xparam->outputs.returncode = 
(listen(sock->socket, 5) == 0) ?  0: -1;
+                                       xparam->outputs.returncode = 
(listen(sock->socket, xparam->inputs.backlog) == 0) ?  0: -1;
                                        return PHP_STREAM_OPTION_RETURN_OK;

                                case STREAM_XPORT_OP_GET_NAME:

Modified: php/php-src/trunk/main/streams/transports.c
===================================================================
--- php/php-src/trunk/main/streams/transports.c 2010-03-11 16:19:43 UTC (rev 
296078)
+++ php/php-src/trunk/main/streams/transports.c 2010-03-11 16:37:24 UTC (rev 
296079)
@@ -157,7 +157,20 @@
                                        ERR_RETURN(error_string, error_text, 
"bind() failed: %s");
                                        failed = 1;
                                } else if (flags & STREAM_XPORT_LISTEN) {
-                                       if (0 != 
php_stream_xport_listen(stream, 5, &error_text TSRMLS_CC)) {
+                                       zval **zbacklog = NULL;
+                                       int backlog = 32;
+
+                                       if (stream->context && 
php_stream_context_get_option(stream->context, "socket", "backlog", &zbacklog) 
== SUCCESS) {
+                                               zval *ztmp = *zbacklog;
+
+                                               convert_to_long_ex(&ztmp);
+                                               backlog = Z_LVAL_P(ztmp);
+                                               if (ztmp != *zbacklog) {
+                                                       zval_ptr_dtor(&ztmp);
+                                               }
+                                       }
+
+                                       if (0 != 
php_stream_xport_listen(stream, backlog, &error_text TSRMLS_CC)) {
                                                ERR_RETURN(error_string, 
error_text, "listen() failed: %s");
                                                failed = 1;
                                        }

Modified: php/php-src/trunk/main/streams/xp_socket.c
===================================================================
--- php/php-src/trunk/main/streams/xp_socket.c  2010-03-11 16:19:43 UTC (rev 
296078)
+++ php/php-src/trunk/main/streams/xp_socket.c  2010-03-11 16:37:24 UTC (rev 
296079)
@@ -324,7 +324,7 @@

                        switch (xparam->op) {
                                case STREAM_XPORT_OP_LISTEN:
-                                       xparam->outputs.returncode = 
(listen(sock->socket, 5) == 0) ?  0: -1;
+                                       xparam->outputs.returncode = 
(listen(sock->socket, xparam->inputs.backlog) == 0) ?  0: -1;
                                        return PHP_STREAM_OPTION_RETURN_OK;

                                case STREAM_XPORT_OP_GET_NAME:

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to