diff options
author | Michael Wallner <mike@php.net> | 2010-03-11 16:37:24 +0000 |
---|---|---|
committer | Michael Wallner <mike@php.net> | 2010-03-11 16:37:24 +0000 |
commit | d73a7cdfe124b44daf0a1f78f8edf6c5c8bc352f (patch) | |
tree | da980ec92c6a4134a6873c845db61b2000436ff4 | |
parent | 82ff467d8368e84b5f100f5eca6384dbcfd51dee (diff) | |
download | php-git-d73a7cdfe124b44daf0a1f78f8edf6c5c8bc352f.tar.gz |
add backlock socket context option for stream_socket_server(),
which had a hardcoded backlog of 5 at two occurrances
-rw-r--r-- | main/streams/transports.c | 15 | ||||
-rw-r--r-- | main/streams/xp_socket.c | 2 |
2 files changed, 15 insertions, 2 deletions
diff --git a/main/streams/transports.c b/main/streams/transports.c index cd44cba1c2..56b869db5d 100644 --- a/main/streams/transports.c +++ b/main/streams/transports.c @@ -157,7 +157,20 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, long namelen, int 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; } diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index a84ceb64c2..a260586e8b 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -324,7 +324,7 @@ static int php_sockop_set_option(php_stream *stream, int option, int value, void 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: |