libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 6c991e0929c3fbbdfa0eee099ce52a2fb850da85
parent 5c71e7550e31cacebc64f1669c28d7f8940e9701
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Sun, 14 May 2017 15:09:10 +0300

Handle resumed connections and closed "upgraded" connections in thread-per-connection mode with select(),
do not use zero delay in MHD_poll_listen_socket() if connections are resumed

Diffstat:
MChangeLog | 4++++
Msrc/microhttpd/daemon.c | 9+++++----
2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,7 @@ +Sun May 14 15:05:00 MSK 2017 + Fixed resuming connections and closing upgraded connections in select() + mode with thread-per-connection. -EG + Sun May 14 14:49:00 MSK 2017 Removed extra call to resume connections in MHD_run(). Handle resumed connection without delay in epoll mode. diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -3509,12 +3509,13 @@ MHD_select (struct MHD_Daemon *daemon, FD_ZERO (&es); maxsock = MHD_INVALID_SOCKET; err_state = MHD_NO; + if ( (0 != (daemon->options & MHD_TEST_ALLOW_SUSPEND_RESUME)) && + (MHD_YES == resume_suspended_connections (daemon)) && + (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) ) + may_block = MHD_NO; + if (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) { - if ( (0 != (daemon->options & MHD_TEST_ALLOW_SUSPEND_RESUME)) && - (MHD_YES == resume_suspended_connections (daemon)) ) - may_block = MHD_NO; - /* single-threaded, go over everything */ if (MHD_NO == internal_get_fdset2 (daemon,