Переглянути джерело

Hi folks,

I guess i found a problem with suspended connections. There is a
scenarion where one can resume a connection and then stop the daemon
without gives the daemon the oportunity to really resume the connection.
In this case, microhttpd will abort telling one that there is suspended
connection (because the connection is still in the daemon's suspended
list).

The following patch solves the problem (i've this problem using external
mainloop).

Regards,
Flavio Ceolin
Christian Grothoff 10 роки тому
батько
коміт
70ca8aaaea
3 змінених файлів з 8 додано та 1 видалено
  1. 4 0
      ChangeLog
  2. 1 1
      src/include/microhttpd.h
  3. 3 0
      src/microhttpd/daemon.c

+ 4 - 0
ChangeLog

@@ -1,3 +1,7 @@
+Tue Nov 10 15:25:48 CET 2015
+	Fix issue with shutdown if connection was resumed just
+	before shutdown. -FC
+
 Fri Nov  6 22:54:38 CET 2015
 	Fixing the buffer shrinkage issue, this time with test. -CG
         Releasing libmicrohttpd 0.9.46. -CG

+ 1 - 1
src/include/microhttpd.h

@@ -130,7 +130,7 @@ typedef intptr_t ssize_t;
  * Current version of the library.
  * 0x01093001 = 1.9.30-1.
  */
-#define MHD_VERSION 0x00094601
+#define MHD_VERSION 0x00094602
 
 /**
  * MHD-internal return code for "YES".

+ 3 - 0
src/microhttpd/daemon.c

@@ -4489,6 +4489,9 @@ MHD_stop_daemon (struct MHD_Daemon *daemon)
 
   if (NULL == daemon)
     return;
+
+  if (0 != (MHD_USE_SUSPEND_RESUME & daemon->options))
+    resume_suspended_connections (daemon);
   daemon->shutdown = MHD_YES;
   fd = daemon->socket_fd;
   daemon->socket_fd = MHD_INVALID_SOCKET;