[master] 486cf54 Give vcl_backend_(fetch|response){} the intended return methods.

Poul-Henning Kamp phk at varnish-cache.org
Wed May 22 21:08:37 CEST 2013


commit 486cf5448db734ab35d3e07b9666509fe5bfab2f
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed May 22 19:03:01 2013 +0000

    Give vcl_backend_(fetch|response){} the intended return methods.

diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 3ab9cea..369ed21 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -763,10 +763,10 @@ cnt_fetch(struct worker *wrk, struct req *req, struct busyobj *bo)
 	VBO_DerefBusyObj(wrk, &bo);
 
 	switch (wrk->handling) {
-	case VCL_RET_RESTART:
-		return (1);
 	case VCL_RET_ERROR:
 		return (-1);
+	case VCL_RET_RESTART:
+		INCOMPL();
 	default:
 		WRONG("Illegal action in vcl_fetch{}");
 	}
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 9a4e27d..d8ba776 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -356,17 +356,14 @@ cnt_fetch(struct worker *wrk, struct req *req)
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 
 	i = VBF_Fetch(wrk, req);
-	if (i == 0) {
-		assert(WRW_IsReleased(wrk));
-		req->req_step = R_STP_PREPRESP;
-	} else if (i < 0) {
+	if (i < 0) {
 		VBO_DerefBusyObj(wrk, &req->busyobj);
 		req->err_code = 503;
 		req->req_step = R_STP_ERROR;
 	} else {
-		VBO_DerefBusyObj(wrk, &req->busyobj);
-		assert(i == 1);
-		req->req_step = R_STP_RESTART;
+		AZ(i);
+		assert(WRW_IsReleased(wrk));
+		req->req_step = R_STP_PREPRESP;
 	}
 	return (REQ_FSM_MORE);
 }
diff --git a/bin/varnishtest/tests/v00017.vtc b/bin/varnishtest/tests/v00017.vtc
index 29b1bfb..b8553e6 100644
--- a/bin/varnishtest/tests/v00017.vtc
+++ b/bin/varnishtest/tests/v00017.vtc
@@ -67,7 +67,7 @@ varnish v1 -vcl {
 varnish v1 -vcl {
 	backend b { .host = "127.0.0.1"; }
 	sub vcl_recv { if (client.ip == "127.0.0.1") { return(pass); } }
-	sub vcl_backend_fetch { if (client.ip != "127.0.0.1") { return(pass); } }
+	sub vcl_backend_response { if (client.ip != "127.0.0.1") { return(restart); } }
 }
 
 varnish v1 -errvcl {Operator > not possible on IP} {
diff --git a/lib/libvcl/generate.py b/lib/libvcl/generate.py
index 7671650..40fd1e1 100755
--- a/lib/libvcl/generate.py
+++ b/lib/libvcl/generate.py
@@ -85,8 +85,8 @@ returns =(
 	('purge',		"C", ('error', 'fetch',)),
 	('miss',		"C", ('error', 'restart', 'pass', 'fetch',)),
 	('lookup',		"C", ('error', 'restart', 'pass', 'deliver',)),
-	('backend_fetch',	"B", ('fetch', 'pass',)),
-	('backend_response',	"B", ('deliver',)),
+	('backend_fetch',	"B", ('fetch', 'error')),
+	('backend_response',	"B", ('deliver', 'restart', 'error')),
 	('deliver',		"C", ('restart', 'deliver',)),
 	('error',		"C", ('restart', 'deliver',)),
 	('init',		"", ('ok',)),



More information about the varnish-commit mailing list