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

Fix unlocked broadcast

Since the purpose of this broadcast is to notify stop_flag, locking is
once needed.
xtne6f 9 лет назад
Родитель
Сommit
e071d4691e
1 измененных файлов с 1 добавлено и 1 удалено
  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);
 	}