فهرست منبع

Do not add "Connection: Keep-Alive" header for "upgrade" connections

Evgeny Grin (Karlson2k) 8 سال پیش
والد
کامیت
917342b3fb
2فایلهای تغییر یافته به همراه15 افزوده شده و 0 حذف شده
  1. 4 0
      ChangeLog
  2. 11 0
      src/microhttpd/connection.c

+ 4 - 0
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

+ 11 - 0
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;