From bbe7aa94e0f3591dee30e39e81c81fe657f93eb7 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 20 Dec 2014 01:31:24 +0000 Subject: [PATCH] -just to be sure, also check if client set Connection: close at the end --- src/microhttpd/connection.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c index 020066af..ae90e8a4 100644 --- a/src/microhttpd/connection.c +++ b/src/microhttpd/connection.c @@ -2291,6 +2291,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) unsigned int timeout; const char *end; char *line; + int client_close; connection->in_idle = MHD_YES; while (1) @@ -2589,6 +2590,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) end = MHD_get_response_header (connection->response, MHD_HTTP_HEADER_CONNECTION); + client_close = ((NULL != end) && (0 == strcasecmp (end, "close"))); MHD_destroy_response (connection->response); connection->response = NULL; if ( (NULL != daemon->notify_completed) && @@ -2604,6 +2606,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection) MHD_lookup_connection_value (connection, MHD_HEADER_KIND, MHD_HTTP_HEADER_CONNECTION); if ( (MHD_YES == connection->read_closed) || + (client_close) || ((NULL != end) && (0 == strcasecmp (end, "close"))) ) { connection->read_closed = MHD_YES;