Просмотр исходного кода

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 лет назад
Родитель
Сommit
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;