[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