aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2015-12-08 20:48:44 +0000
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2015-12-08 20:48:44 +0000
commit9403196ad0b67b13d4fefdc4d3da6625d66be34e (patch)
tree0d0cfa403381538943edb1065d6dca550f2e9dfe /src/microhttpd
parent8ace389d37855f16c9bef7afd70304b8d5c7da4e (diff)
downloadlibmicrohttpd-9403196ad0b67b13d4fefdc4d3da6625d66be34e.tar.gz
libmicrohttpd-9403196ad0b67b13d4fefdc4d3da6625d66be34e.zip
Change default listen backlog size from 32 to SOMAXCONN, allow to specify required listen backlog size
Diffstat (limited to 'src/microhttpd')
-rw-r--r--src/microhttpd/daemon.c11
-rw-r--r--src/microhttpd/internal.h5
2 files changed, 15 insertions, 1 deletions
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 209f8e5d..29daaad7 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -3397,6 +3397,9 @@ parse_options_va (struct MHD_Daemon *daemon,
3397 case MHD_OPTION_LISTENING_ADDRESS_REUSE: 3397 case MHD_OPTION_LISTENING_ADDRESS_REUSE:
3398 daemon->listening_address_reuse = va_arg (ap, unsigned int) ? 1 : -1; 3398 daemon->listening_address_reuse = va_arg (ap, unsigned int) ? 1 : -1;
3399 break; 3399 break;
3400 case MHD_OPTION_LISTEN_BACKLOG_SIZE:
3401 daemon->listen_backlog_size = va_arg (ap, unsigned int);
3402 break;
3400 case MHD_OPTION_ARRAY: 3403 case MHD_OPTION_ARRAY:
3401 oa = va_arg (ap, struct MHD_OptionItem*); 3404 oa = va_arg (ap, struct MHD_OptionItem*);
3402 i = 0; 3405 i = 0;
@@ -3423,6 +3426,7 @@ parse_options_va (struct MHD_Daemon *daemon,
3423 case MHD_OPTION_THREAD_POOL_SIZE: 3426 case MHD_OPTION_THREAD_POOL_SIZE:
3424 case MHD_OPTION_TCP_FASTOPEN_QUEUE_SIZE: 3427 case MHD_OPTION_TCP_FASTOPEN_QUEUE_SIZE:
3425 case MHD_OPTION_LISTENING_ADDRESS_REUSE: 3428 case MHD_OPTION_LISTENING_ADDRESS_REUSE:
3429 case MHD_OPTION_LISTEN_BACKLOG_SIZE:
3426 if (MHD_YES != parse_options (daemon, 3430 if (MHD_YES != parse_options (daemon,
3427 servaddr, 3431 servaddr,
3428 opt, 3432 opt,
@@ -3731,6 +3735,11 @@ MHD_start_daemon_va (unsigned int flags,
3731 daemon->connection_timeout = 0; /* no timeout */ 3735 daemon->connection_timeout = 0; /* no timeout */
3732 daemon->wpipe[0] = MHD_INVALID_PIPE_; 3736 daemon->wpipe[0] = MHD_INVALID_PIPE_;
3733 daemon->wpipe[1] = MHD_INVALID_PIPE_; 3737 daemon->wpipe[1] = MHD_INVALID_PIPE_;
3738#ifdef SOMAXCONN
3739 daemon->listen_backlog_size = SOMAXCONN;
3740#else /* !SOMAXCONN */
3741 daemon->listen_backlog_size = 511; /* should be safe value */
3742#endif /* !SOMAXCONN */
3734#if HAVE_MESSAGES 3743#if HAVE_MESSAGES
3735 daemon->custom_error_log = (MHD_LogCallback) &vfprintf; 3744 daemon->custom_error_log = (MHD_LogCallback) &vfprintf;
3736 daemon->custom_error_log_cls = stderr; 3745 daemon->custom_error_log_cls = stderr;
@@ -4098,7 +4107,7 @@ MHD_start_daemon_va (unsigned int flags,
4098 } 4107 }
4099 } 4108 }
4100#endif 4109#endif
4101 if (listen (socket_fd, 32) < 0) 4110 if (listen (socket_fd, daemon->listen_backlog_size) < 0)
4102 { 4111 {
4103#if HAVE_MESSAGES 4112#if HAVE_MESSAGES
4104 MHD_DLOG (daemon, 4113 MHD_DLOG (daemon,
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
index 3760fefb..9e1a2901 100644
--- a/src/microhttpd/internal.h
+++ b/src/microhttpd/internal.h
@@ -1301,6 +1301,11 @@ struct MHD_Daemon
1301 */ 1301 */
1302 unsigned int fastopen_queue_size; 1302 unsigned int fastopen_queue_size;
1303#endif 1303#endif
1304
1305 /**
1306 * The size of queue for listen socket.
1307 */
1308 unsigned int listen_backlog_size;
1304}; 1309};
1305 1310
1306 1311