[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