libmicrohttpd

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

commit 4327f75e6752eca6ded53abc6ea48b48bf1eea17
parent c94103be0fe8221b26a26db0e35fddaa0f0ae2b4
Author: David Barksdale <amatus@amat.us>
Date:   Sun, 17 Aug 2014 14:17:43 +0000

Do not move a connection between timeout lists if it is suspended

When a connection is suspended it is not in a timeout list.


Diffstat:
Msrc/microhttpd/connection.c | 36++++++++++++++++++++----------------
1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c @@ -2869,25 +2869,29 @@ MHD_set_connection_option (struct MHD_Connection *connection, 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"); - if (connection->connection_timeout == daemon->connection_timeout) - XDLL_remove (daemon->normal_timeout_head, - daemon->normal_timeout_tail, - connection); - else - XDLL_remove (daemon->manual_timeout_head, - daemon->manual_timeout_tail, - connection); + if (MHD_YES != connection->suspended) { + if (connection->connection_timeout == daemon->connection_timeout) + XDLL_remove (daemon->normal_timeout_head, + daemon->normal_timeout_tail, + connection); + else + XDLL_remove (daemon->manual_timeout_head, + daemon->manual_timeout_tail, + connection); + } va_start (ap, option); connection->connection_timeout = va_arg (ap, unsigned int); va_end (ap); - if (connection->connection_timeout == daemon->connection_timeout) - XDLL_insert (daemon->normal_timeout_head, - daemon->normal_timeout_tail, - connection); - else - XDLL_insert (daemon->manual_timeout_head, - daemon->manual_timeout_tail, - connection); + if (MHD_YES != connection->suspended) { + if (connection->connection_timeout == daemon->connection_timeout) + XDLL_insert (daemon->normal_timeout_head, + daemon->normal_timeout_tail, + connection); + else + XDLL_insert (daemon->manual_timeout_head, + daemon->manual_timeout_tail, + connection); + } if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) && (MHD_YES != MHD_mutex_unlock_ (&daemon->cleanup_connection_mutex)) ) MHD_PANIC ("Failed to release cleanup mutex\n");