From 8fa9f610b95b9c332c80e845d8da954857834d4b Mon Sep 17 00:00:00 2001 From: Walid Boudebouda Date: Mon, 15 Jan 2024 19:07:17 +0100 Subject: [PATCH] backend: Add backend_cw_fini --- bin/varnishd/cache/cache_backend.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c index 280a68edd2..b057ed2421 100644 --- a/bin/varnishd/cache/cache_backend.c +++ b/bin/varnishd/cache/cache_backend.c @@ -143,6 +143,14 @@ vbe_connwait_dequeue_locked(struct backend *bp, struct backend_cw *cw) cw->cw_state = CW_DEQUEUED; } +static void +backend_cw_fini(struct backend_cw *cw) +{ + CHECK_OBJ_NOTNULL(cw, BACKEND_CW_MAGIC); + AN(cw->cw_state != CW_QUEUED); + PTOK(pthread_cond_destroy(&cw->cw_cond)); +} + /*-------------------------------------------------------------------- * Get a connection to the backend * @@ -212,7 +220,7 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, "backend %s: busy", VRT_BACKEND_string(dir)); bp->vsc->busy++; VSC_C_main->backend_busy++; - PTOK(pthread_cond_destroy(&cw->cw_cond)); + backend_cw_fini(cw); return (NULL); } @@ -226,7 +234,7 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, vbe_connwait_dequeue_locked(bp, cw); Lck_Unlock(bp->director->mtx); } - PTOK(pthread_cond_destroy(&cw->cw_cond)); + backend_cw_fini(cw); return (NULL); } bo->htc->doclose = SC_NULL; @@ -248,7 +256,7 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, vbe_connwait_dequeue_locked(bp, cw); Lck_Unlock(bp->director->mtx); } - PTOK(pthread_cond_destroy(&cw->cw_cond)); + backend_cw_fini(cw); return (NULL); } @@ -286,7 +294,7 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, bp->vsc->conn--; bp->vsc->req--; Lck_Unlock(bp->director->mtx); - PTOK(pthread_cond_destroy(&cw->cw_cond)); + backend_cw_fini(cw); return (NULL); } bo->acct.bereq_hdrbytes += err; @@ -305,7 +313,7 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, bo->htc->first_byte_timeout, bo, bp); FIND_TMO(between_bytes_timeout, bo->htc->between_bytes_timeout, bo, bp); - PTOK(pthread_cond_destroy(&cw->cw_cond)); + backend_cw_fini(cw); return (pfd); }