[master] 164378c Fix and test a refcount leak

Poul-Henning Kamp phk at varnish-cache.org
Wed Sep 4 08:52:10 CEST 2013


commit 164378c5cd35ab4eddf587f91ef1a977454029ef
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Sep 4 06:51:58 2013 +0000

    Fix and test a refcount leak

diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 5fc5171..ca47bf0 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -370,6 +370,7 @@ cnt_fetch(struct worker *wrk, struct req *req)
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
+	CHECK_OBJ_NOTNULL(req->objcore, OBJCORE_MAGIC);
 	AZ(req->obj);
 
 	req->acct_req.fetch++;
@@ -378,7 +379,7 @@ cnt_fetch(struct worker *wrk, struct req *req)
 	if (req->objcore->flags & OC_F_FAILED) {
 		req->err_code = 503;
 		req->req_step = R_STP_ERROR;
-		//XXX ? AZ(HSH_DerefObjCore(&wrk->stats, &req->objcore));
+		(void)HSH_DerefObjCore(&wrk->stats, &req->objcore);
 		req->objcore = NULL;
 		return (REQ_FSM_MORE);
 	}
diff --git a/bin/varnishtest/tests/b00020.vtc b/bin/varnishtest/tests/b00020.vtc
index 6b6943d..dbe6831 100644
--- a/bin/varnishtest/tests/b00020.vtc
+++ b/bin/varnishtest/tests/b00020.vtc
@@ -22,6 +22,9 @@ client c1 {
 	expect resp.status == 503
 } -run
 
+varnish v1 -expect n_object == 0
+varnish v1 -expect n_objectcore == 0
+
 server s1 {
 	rxreq
 	send "HTTP/1.1 200 Ok\r\nConnection: close\r\n\r\n"
@@ -36,3 +39,7 @@ client c1 {
 	rxresp
 	expect resp.status == 200
 } -run
+
+varnish v1 -expect n_object == 1
+varnish v1 -expect n_objectcore == 1
+



More information about the varnish-commit mailing list