---
 bin/varnishd/cache/cache_ban.c     |  2 +-
 bin/varnishd/cache/cache_http.c    | 17 +++++++++--------
 bin/varnishd/cache/cache_vrt_var.c |  6 ++++--
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/bin/varnishd/cache/cache_ban.c b/bin/varnishd/cache/cache_ban.c
index 699bcf5..64f3afe 100644
--- a/bin/varnishd/cache/cache_ban.c
+++ b/bin/varnishd/cache/cache_ban.c
@@ -857,7 +857,7 @@ ban_evaluate(struct worker *wrk, const uint8_t *bs, struct 
objcore *oc,
                        arg1 = HTTP_GetHdrPack(wrk, oc, bt.arg1_spec);
                        break;
                case BANS_ARG_OBJSTATUS:
-                       arg1 = HTTP_GetHdrPack(wrk, oc, ":status");
+                       arg1 = HTTP_GetHdrPack(wrk, oc, "\010:status:");
                        break;
                default:
                        WRONG("Wrong BAN_ARG code");
diff --git a/bin/varnishd/cache/cache_http.c b/bin/varnishd/cache/cache_http.c
index e832992..a3aeba3 100644
--- a/bin/varnishd/cache/cache_http.c
+++ b/bin/varnishd/cache/cache_http.c
@@ -901,6 +901,12 @@ HTTP_GetHdrPack(struct worker *wrk, struct objcore *oc, 
const char *hdr)
        CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
        AN(hdr);
 
+       l = hdr[0];
+       assert(l > 0);
+       assert(l == strlen(hdr + 1));
+       assert(hdr[l] == ':');
+       hdr++;
+
        ptr = ObjGetattr(wrk, oc, OA_HEADERS, NULL);
        AN(ptr);
 
@@ -909,21 +915,16 @@ HTTP_GetHdrPack(struct worker *wrk, struct objcore *oc, 
const char *hdr)
        VSL(SLT_Debug, 0, "%d %s", __LINE__, ptr);
 
        /* Skip PROTO, STATUS and REASON */
-       if (!strcmp(hdr, ":proto"))
+       if (!strcmp(hdr, ":proto:"))
                return (ptr);
        ptr = strchr(ptr, '\0') + 1;
-       if (!strcmp(hdr, ":status"))
+       if (!strcmp(hdr, ":status:"))
                return (ptr);
        ptr = strchr(ptr, '\0') + 1;
-       if (!strcmp(hdr, ":reason"))
+       if (!strcmp(hdr, ":reason:"))
                return (ptr);
        ptr = strchr(ptr, '\0') + 1;
 
-       l = hdr[0];
-       assert(l == strlen(hdr + 1));
-       assert(hdr[l] == ':');
-       hdr++;
-
        while (*ptr != '\0') {
                if (!strncasecmp(ptr, hdr, l)) {
                        ptr += l;
diff --git a/bin/varnishd/cache/cache_vrt_var.c 
b/bin/varnishd/cache/cache_vrt_var.c
index cc302c5..77f3892 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -157,7 +157,8 @@ VRT_r_obj_proto(VRT_CTX)
        CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
        CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);
 
-       return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore, ":proto"));
+       return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore,
+               "\007:proto:"));
 }
 
 const char *
@@ -167,7 +168,8 @@ VRT_r_obj_reason(VRT_CTX)
        CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
        CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);
 
-       return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore, ":reason"));
+       return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore,
+               "\010:reason:"));
 }
 
 /*--------------------------------------------------------------------
-- 
2.1.4


_______________________________________________
varnish-dev mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev

Reply via email to