[master] 20aee1b7d Partly revert "Close VDPs for error conditions in cnt_transmit()"

Nils Goroll nils.goroll at uplex.de
Fri Mar 1 14:43:05 UTC 2024


commit 20aee1b7d0f58c3669f763518264e686f5b39c7b
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Wed Feb 28 13:49:52 2024 +0100

    Partly revert "Close VDPs for error conditions in cnt_transmit()"
    
    This reverts the code change from commit 6d423aa5c60940ebde76c91f0a482767346df405,
    keeps the test case and adds a VDP_Close() for the case that the
    transport deliver function is not called.
    
    Part 2 of the fix for #4067
    
    Conflicts:
            bin/varnishd/cache/cache_req_fsm.c

diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index e84407647..ed97a0110 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -467,6 +467,8 @@ cnt_transmit(struct worker *wrk, struct req *req)
 	    VCL_StackVDP(req, req->vcl, req->vdp_filter_list)) {
 		VSLb(req->vsl, SLT_Error, "Failure to push processors");
 		req->doclose = SC_OVERLOAD;
+		req->acct.resp_bodybytes +=
+			VDP_Close(req->vdc, req->objcore, boc);
 	} else {
 		if (status < 200 || status == 204) {
 			// rfc7230,l,1691,1695
@@ -504,9 +506,6 @@ cnt_transmit(struct worker *wrk, struct req *req)
 		req->doclose = SC_TX_ERROR;
 	}
 
-	if (req->doclose != SC_NULL)
-		req->acct.resp_bodybytes += VDP_Close(req->vdc, req->objcore, boc);
-
 	if (boc != NULL)
 		HSH_DerefBoc(wrk, req->objcore);
 


More information about the varnish-commit mailing list