| 
														
															@@ -3322,6 +3322,12 @@ static void handle_cgi_request(struct mg_connection *conn, const char *prog) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 done:
 
														 | 
														
														 | 
														
															 done:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (pid != (pid_t) -1) {
 
														 | 
														
														 | 
														
															   if (pid != (pid_t) -1) {
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     kill(pid, SIGKILL);
 
														 | 
														
														 | 
														
															     kill(pid, SIGKILL);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#if !defined(_WIN32)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    {
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        int st;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        while (waitpid(pid, &st, 0) != -1);  // clean zombies
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    }
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#endif
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   }
 
														 | 
														
														 | 
														
															   }
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (fdin[0] != -1) {
 
														 | 
														
														 | 
														
															   if (fdin[0] != -1) {
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     close(fdin[0]);
 
														 | 
														
														 | 
														
															     close(fdin[0]);
 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -5261,8 +5267,6 @@ struct mg_context *mg_start(const struct mg_callbacks *callbacks, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // Ignore SIGPIPE signal, so if browser cancels the request, it
 
														 | 
														
														 | 
														
															   // Ignore SIGPIPE signal, so if browser cancels the request, it
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // won't kill the whole process.
 
														 | 
														
														 | 
														
															   // won't kill the whole process.
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   (void) signal(SIGPIPE, SIG_IGN);
 
														 | 
														
														 | 
														
															   (void) signal(SIGPIPE, SIG_IGN);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  // Also ignoring SIGCHLD to let the OS to reap zombies properly.
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  (void) signal(SIGCHLD, SIG_IGN);
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #endif // !_WIN32
 
														 | 
														
														 | 
														
															 #endif // !_WIN32
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   (void) pthread_mutex_init(&ctx->mutex, NULL);
 
														 | 
														
														 | 
														
															   (void) pthread_mutex_init(&ctx->mutex, NULL);
 
														 |