From ed9dfcdad4b3328342b2c8cc3fda29b18abe9ce9 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 26 Jun 2014 19:07:19 +0000 Subject: [PATCH] fix failure to terminate quickly in thread-per-connection mode if clients have open connections --- ChangeLog | 5 +++++ src/include/microhttpd.h | 2 +- src/microhttpd/daemon.c | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd38fdd2..ceed07fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 26 21:06:04 CEST 2014 + Fix failure to terminate 'instantly' in thread-per-connection + mode if there is a client with open connections. + Thanks to Kenneth Mastro for reporting. -CG + Sun Jun 22 12:22:08 CEST 2014 Actually, avoid locking on response as responses must not be modified in a connection-specific way; instead diff --git a/src/include/microhttpd.h b/src/include/microhttpd.h index 34c6da1f..97cde58b 100644 --- a/src/include/microhttpd.h +++ b/src/include/microhttpd.h @@ -130,7 +130,7 @@ typedef intptr_t ssize_t; * Current version of the library. * 0x01093001 = 1.9.30-1. */ -#define MHD_VERSION 0x00093703 +#define MHD_VERSION 0x00093704 /** * MHD-internal return code for "YES". diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c index 0fdd32eb..8f15498c 100644 --- a/src/microhttpd/daemon.c +++ b/src/microhttpd/daemon.c @@ -3996,7 +3996,7 @@ close_all_connections (struct MHD_Daemon *daemon) if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) && (MHD_YES != MHD_mutex_lock_ (&daemon->cleanup_connection_mutex)) ) MHD_PANIC ("Failed to acquire cleanup mutex\n"); - for (pos = daemon->connections_head; NULL != pos; pos = pos->nextX) + for (pos = daemon->connections_head; NULL != pos; pos = pos->next) shutdown (pos->socket_fd, (pos->read_closed == MHD_YES) ? SHUT_WR : SHUT_RDWR); if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) &&