aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2016-04-22 15:03:27 +0000
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2016-04-22 15:03:27 +0000
commit366a260595db768fa12371b8a746894e73f5af79 (patch)
treeb2466a335c9e7b88aa34dbc660894c799bb29794
parent11dc6d06afa0fe8f7d2eb8a64d9a7698a3192434 (diff)
downloadlibmicrohttpd-366a260595db768fa12371b8a746894e73f5af79.tar.gz
libmicrohttpd-366a260595db768fa12371b8a746894e73f5af79.zip
Fixed race conditions for thread pool.
-rw-r--r--ChangeLog4
-rw-r--r--src/microhttpd/daemon.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 87765140..b154ffea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
1Fri Apr 22 14:29:28 CET 2016
2 Fixed race conditions when stopping quiesced daemon with thread
3 pool. -EG
4
1Wed Apr 20 18:12:30 CET 2016 5Wed Apr 20 18:12:30 CET 2016
2 Fixed macros in sysfdsetsize.c which could prevent compiling with 6 Fixed macros in sysfdsetsize.c which could prevent compiling with
3 non-default FD_SETSIZE. 7 non-default FD_SETSIZE.
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 2173378d..42b07c5e 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -4306,7 +4306,8 @@ MHD_start_daemon_va (unsigned int flags,
4306 d->worker_pool_size = 0; 4306 d->worker_pool_size = 0;
4307 d->worker_pool = NULL; 4307 d->worker_pool = NULL;
4308 4308
4309 if (MHD_USE_SUSPEND_RESUME == (flags & MHD_USE_SUSPEND_RESUME)) 4309 /* Always use individual control pipes */
4310 if (1)
4310 { 4311 {
4311 if (0 != MHD_pipe_ (d->wpipe)) 4312 if (0 != MHD_pipe_ (d->wpipe))
4312 { 4313 {
@@ -4330,7 +4331,6 @@ MHD_start_daemon_va (unsigned int flags,
4330 } 4331 }
4331#ifndef MHD_WINSOCK_SOCKETS 4332#ifndef MHD_WINSOCK_SOCKETS
4332 if ( (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) && 4333 if ( (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) &&
4333 (MHD_USE_SUSPEND_RESUME == (flags & MHD_USE_SUSPEND_RESUME)) &&
4334 (d->wpipe[0] >= FD_SETSIZE) ) 4334 (d->wpipe[0] >= FD_SETSIZE) )
4335 { 4335 {
4336#ifdef HAVE_MESSAGES 4336#ifdef HAVE_MESSAGES
@@ -4650,7 +4650,8 @@ MHD_stop_daemon (struct MHD_Daemon *daemon)
4650 (0 != MHD_socket_close_ (daemon->worker_pool[i].epoll_fd)) ) 4650 (0 != MHD_socket_close_ (daemon->worker_pool[i].epoll_fd)) )
4651 MHD_PANIC ("close failed\n"); 4651 MHD_PANIC ("close failed\n");
4652#endif 4652#endif
4653 if ( (MHD_USE_SUSPEND_RESUME == (daemon->options & MHD_USE_SUSPEND_RESUME)) ) 4653 /* Individual pipes are always used */
4654 if (1)
4654 { 4655 {
4655 if (MHD_INVALID_PIPE_ != daemon->worker_pool[i].wpipe[1]) 4656 if (MHD_INVALID_PIPE_ != daemon->worker_pool[i].wpipe[1])
4656 { 4657 {