commit 917342b3fb0547523f2b4c6e607bb2ffd9cacdfd
parent 7cb47792c7ab27b6fd4564874863f0a8e82a0ff6
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Tue, 9 May 2017 23:17:57 +0300
Do not add "Connection: Keep-Alive" header for "upgrade" connections
Diffstat:
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 9 23:16:00 MSK 2017
+ Fixed: Do not add "Connection: Keep-Alive" header for "upgrade"
+ connections. -EG
+
Tue May 9 21:01:00 MSK 2017
Fixed: check all "Connection" headers of request for "Close" and "Upgrade"
tokens instead of using only first "Connection" header with full string
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
@@ -1148,11 +1148,19 @@ build_header_response (struct MHD_Connection *connection)
if (0 != (connection->response->flags & MHD_RF_HTTP_VERSION_1_0_ONLY))
connection->keepalive = MHD_CONN_MUST_CLOSE;
+#ifdef UPGRADE_SUPPORT
+ else if (NULL != connection->response->upgrade_handler)
+ /* If this connection will not be "upgraded", it must be closed. */
+ connection->keepalive = MHD_CONN_MUST_CLOSE;
+#endif /* UPGRADE_SUPPORT */
/* now analyze chunked encoding situation */
connection->have_chunked_upload = false;
if ( (MHD_SIZE_UNKNOWN == connection->response->total_size) &&
+#ifdef UPGRADE_SUPPORT
+ (NULL == connection->response->upgrade_handler) &&
+#endif /* UPGRADE_SUPPORT */
(! response_has_close) &&
(! client_requested_close) )
{
@@ -1244,6 +1252,9 @@ build_header_response (struct MHD_Connection *connection)
(! response_has_close) &&
(MHD_NO == must_add_close) &&
(MHD_CONN_MUST_CLOSE != connection->keepalive) &&
+#ifdef UPGRADE_SUPPORT
+ (NULL == connection->response->upgrade_handler) &&
+#endif /* UPGRADE_SUPPORT */
(MHD_YES == keepalive_possible (connection)) )
must_add_keep_alive = MHD_YES;
break;