From 4327f75e6752eca6ded53abc6ea48b48bf1eea17 Mon Sep 17 00:00:00 2001 From: David Barksdale Date: Sun, 17 Aug 2014 14:17:43 +0000 Subject: [PATCH] Do not move a connection between timeout lists if it is suspended When a connection is suspended it is not in a timeout list. --- src/microhttpd/connection.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c index e34fa147..cd79d66d 100644 --- 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");