diff --git a/README-test-server b/README-test-server index a25f01e9..500024d7 100644 --- a/README-test-server +++ b/README-test-server @@ -145,6 +145,20 @@ you can set it here - LWS_MAX_ZLIB_CONN_BUFFER maximum size a compression buffer is allowed to grow to before closing the connection. Default is 64KBytes. + - LWS_SOMAXCONN maximum number of pending connect requests the listening +socket can cope with. Default is SOMAXCONN. If you need to use synthetic +tests that just spam hundreds of connect requests at once without dropping +any, you can try setting this to MAX_CLIENTS and mess with your box's tcp +config like this (courtesy Edwin van der Oetelaar) + +echo "2048 64512" > /proc/sys/net/ipv4/ip_local_port_range +echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle +echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse +echo "10" > /proc/sys/net/ipv4/tcp_fin_timeout +echo "65536" > /proc/sys/net/core/somaxconn +echo "65536" > /proc/sys/net/ipv4/tcp_max_syn_backlog +echo "262144" > /proc/sys/net/netfilter/nf_conntrack_max + Testing server with a browser ----------------------------- diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 12359ba0..8bc91de1 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -3040,7 +3040,7 @@ libwebsocket_create_context(int port, const char *interf, wsi->mode = LWS_CONNMODE_SERVER_LISTENER; insert_wsi(context, wsi); - listen(sockfd, SOMAXCONN); + listen(sockfd, LWS_SOMAXCONN); lwsl_info(" Listening on port %d\n", port); /* list in the internal poll array */ diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 1b721e5c..27b2049f 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -160,6 +160,9 @@ extern void _lws_log(int filter, const char *format, ...); #ifndef CIPHERS_LIST_STRING #define CIPHERS_LIST_STRING "DEFAULT" #endif +#ifndef LWS_SOMAXCONN +#define LWS_SOMAXCONN SOMAXCONN +#endif #define MAX_WEBSOCKET_04_KEY_LEN 128