فهرست منبع

-just to be sure, also check if client set Connection: close at the end

Christian Grothoff 11 سال پیش
والد
کامیت
bbe7aa94e0
1فایلهای تغییر یافته به همراه3 افزوده شده و 0 حذف شده
  1. 3 0
      src/microhttpd/connection.c

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