From 1ebc52560d4783927959172eb3d4db1e94833373 Mon Sep 17 00:00:00 2001 From: SimonFJ20 Date: Mon, 10 Mar 2025 12:56:04 +0100 Subject: [PATCH] handle all enqueued before waiting --- backend/src/http_server.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/src/http_server.c b/backend/src/http_server.c index 4f32719..51cdd27 100644 --- a/backend/src/http_server.c +++ b/backend/src/http_server.c @@ -241,18 +241,19 @@ static inline void worker_listen(Worker* worker) pthread_testcancel(); pthread_mutex_lock(&ctx->mutex); - pthread_cond_wait(&ctx->cond, &ctx->mutex); - if (request_queue_size(&ctx->req_queue) == 0) { + if (request_queue_size(&ctx->req_queue) > 0) { + Client req; + request_queue_pop(&ctx->req_queue, &req); pthread_mutex_unlock(&ctx->mutex); + + worker_handle_request(worker, &req); continue; } - Client req; - request_queue_pop(&ctx->req_queue, &req); - pthread_mutex_unlock(&ctx->mutex); + pthread_cond_wait(&ctx->cond, &ctx->mutex); - worker_handle_request(worker, &req); + pthread_mutex_unlock(&ctx->mutex); } }