[master] 2b907d8 Add linkage to the top request

Nils Goroll nils.goroll at uplex.de
Mon Mar 9 16:27:05 CET 2015


commit 2b907d8e8adca129d8d395a373d072e0615c148f
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Mon Mar 9 15:19:50 2015 +0100

    Add linkage to the top request

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index fd8291f..5dd6621 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -561,6 +561,7 @@ struct req {
 
 	int			restarts;
 	int			esi_level;
+	struct req		*top;	/* esi_level == 0 request */
 
 #define REQ_FLAG(l, r, w, d) unsigned	l:1;
 #include "tbl/req_flags.h"
diff --git a/bin/varnishd/cache/cache_esi_deliver.c b/bin/varnishd/cache/cache_esi_deliver.c
index 821412c..01cbcc2 100644
--- a/bin/varnishd/cache/cache_esi_deliver.c
+++ b/bin/varnishd/cache/cache_esi_deliver.c
@@ -83,6 +83,13 @@ ved_include(struct req *preq, const char *src, const char *host)
 	VSLb(preq->vsl, SLT_Link, "req %u esi", VXID(req->vsl->wid));
 	req->esi_level = preq->esi_level + 1;
 
+	if (preq->esi_level == 0) {
+		assert(preq->top == preq);
+	} else {
+		CHECK_OBJ_NOTNULL(preq->top, REQ_MAGIC);
+		req->top = preq->top;
+	}
+
 	HTTP_Copy(req->http0, preq->http0);
 
 	req->http0->ws = req->ws;
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index 0f551da..940d0c0 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -376,6 +376,7 @@ SES_GetReq(const struct worker *wrk, struct sess *sp)
 	AN(req);
 	req->magic = REQ_MAGIC;
 	req->sp = sp;
+	req->top = req;	// esi overrides
 
 	e = (char*)req + sz;
 	p = (char*)(req + 1);



More information about the varnish-commit mailing list