Procházet zdrojové kódy

Fix unlocked broadcast

Since the purpose of this broadcast is to notify stop_flag, locking is
once needed.
xtne6f před 9 roky
rodič
revize
e071d4691e
1 změnil soubory, kde provedl 1 přidání a 1 odebrání
  1. 1 1
      src/civetweb.c

+ 1 - 1
src/civetweb.c

@@ -12686,10 +12686,10 @@ master_thread_run(void *thread_func_param)
 	close_all_listening_sockets(ctx);
 
 	/* Wakeup workers that are waiting for connections to handle. */
+	(void)pthread_mutex_lock(&ctx->thread_mutex);
 	pthread_cond_broadcast(&ctx->sq_full);
 
 	/* Wait until all threads finish */
-	(void)pthread_mutex_lock(&ctx->thread_mutex);
 	while (ctx->running_worker_threads > 0) {
 		(void)pthread_cond_wait(&ctx->thread_cond, &ctx->thread_mutex);
 	}