[master] 948e3fd Start a new transaction (xid) on restart

Poul-Henning Kamp phk at FreeBSD.org
Tue Jan 7 12:23:49 CET 2014


commit 948e3fd025d38d0e9e00aee04239a43640c80c86
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Jan 7 11:13:28 2014 +0000

    Start a new transaction (xid) on restart

diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 5bc4a71..048bcc3 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -627,17 +627,28 @@ DOT err_restart [label="ERROR",shape=plaintext]
  */
 
 static enum req_fsm_nxt
-cnt_restart(const struct worker *wrk, struct req *req)
+cnt_restart(struct worker *wrk, struct req *req)
 {
+	unsigned wid, owid;
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 
 	req->director = NULL;
 	if (++req->restarts >= cache_param->max_restarts) {
+		VSLb(req->vsl, SLT_VCL_Error, "Too many restarts");
 		req->err_code = 503;
 		req->req_step = R_STP_ERROR;
 	} else {
+		wid = VXID_Get(&wrk->vxid_pool);
+		// XXX: ReqEnd + ReqAcct ?
+		VSLb(req->vsl, SLT_Link, "req %u", wid);
+		VSLb(req->vsl, SLT_End, "");
+		VSL_Flush(req->vsl, 0);
+		owid = req->vsl->wid & VSL_IDENTMASK;
+		req->vsl->wid = wid | VSL_CLIENTMARKER;
+		VSLb(req->vsl, SLT_Begin, "req %u", owid);
+		
 		req->err_code = 0;
 		req->req_step = R_STP_RECV;
 	}



More information about the varnish-commit mailing list