diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2015-12-08 20:48:44 +0000 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2015-12-08 20:48:44 +0000 |
commit | 9403196ad0b67b13d4fefdc4d3da6625d66be34e (patch) | |
tree | 0d0cfa403381538943edb1065d6dca550f2e9dfe /src/microhttpd | |
parent | 8ace389d37855f16c9bef7afd70304b8d5c7da4e (diff) | |
download | libmicrohttpd-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.c | 11 | ||||
-rw-r--r-- | src/microhttpd/internal.h | 5 |
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 | ||