Преглед на файлове

notify main thread about thread termination for instant clean up

Christian Grothoff преди 7 години
родител
ревизия
4728124102
променени са 2 файла, в които са добавени 14 реда и са изтрити 1 реда
  1. 5 0
      ChangeLog
  2. 9 1
      src/microhttpd/daemon.c

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+Sat Oct 20 12:44:16 CEST 2018
+	In thread-per-connection mode, signal main thread for
+	thread termination for instant clean-up and application
+	notification about closed connections. -CG
+
 Tue Oct 16 20:43:41 CEST 2018
 	Add MHD_RF_HTTP_VERSION_1_0_RESPONSE option to make MHD
 	act more like an HTTP/1.0 server. -GH

+ 9 - 1
src/microhttpd/daemon.c

@@ -2097,6 +2097,14 @@ exit:
        * To avoid data races, do not close socket here. Daemon will
        * use more connections only after cleanup anyway. */
     }
+  if ( (MHD_ITC_IS_VALID_(daemon->itc)) &&
+       (! MHD_itc_activate_ (daemon->itc, "t")) )
+    {
+#ifdef HAVE_MESSAGES
+      MHD_DLOG (daemon,
+                _("Failed to signal thread termination via inter-thread communication channel."));
+#endif
+    }
   return (MHD_THRD_RTRN_TYPE_) 0;
 }
 
@@ -4502,8 +4510,8 @@ static MHD_THRD_RTRN_TYPE_ MHD_THRD_CALL_SPEC_
 MHD_polling_thread (void *cls)
 {
   struct MHD_Daemon *daemon = cls;
-  MHD_thread_init_(&(daemon->pid));
 
+  MHD_thread_init_(&(daemon->pid));
   while (! daemon->shutdown)
     {
       if (0 != (daemon->options & MHD_USE_POLL))