2
0
Эх сурвалжийг харах

Handle resumed connections and closed "upgraded" connections in thread-per-connection mode with select(),
do not use zero delay in MHD_poll_listen_socket() if connections are resumed

Evgeny Grin (Karlson2k) 8 жил өмнө
parent
commit
6c991e0929
2 өөрчлөгдсөн 9 нэмэгдсэн , 4 устгасан
  1. 4 0
      ChangeLog
  2. 5 4
      src/microhttpd/daemon.c

+ 4 - 0
ChangeLog

@@ -1,3 +1,7 @@
+Sun May 14 15:05:00 MSK 2017
+	Fixed resuming connections and closing upgraded connections in select()
+	mode with thread-per-connection. -EG
+
 Sun May 14 14:49:00 MSK 2017
 	Removed extra call to resume connections in MHD_run().
 	Handle resumed connection without delay in epoll mode.

+ 5 - 4
src/microhttpd/daemon.c

@@ -3509,12 +3509,13 @@ MHD_select (struct MHD_Daemon *daemon,
   FD_ZERO (&es);
   maxsock = MHD_INVALID_SOCKET;
   err_state = MHD_NO;
+  if ( (0 != (daemon->options & MHD_TEST_ALLOW_SUSPEND_RESUME)) &&
+       (MHD_YES == resume_suspended_connections (daemon)) &&
+       (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) )
+    may_block = MHD_NO;
+
   if (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION))
     {
-      if ( (0 != (daemon->options & MHD_TEST_ALLOW_SUSPEND_RESUME)) &&
-           (MHD_YES == resume_suspended_connections (daemon)) )
-        may_block = MHD_NO;
-
       /* single-threaded, go over everything */
       if (MHD_NO ==
           internal_get_fdset2 (daemon,