]> err.no Git - varnish/commitdiff
Generate correct code for bereq.http and obj.http
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 2 Jul 2007 13:28:03 +0000 (13:28 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 2 Jul 2007 13:28:03 +0000 (13:28 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1617 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/include/vrt.h
varnish-cache/lib/libvcl/vcc_fixed_token.c
varnish-cache/lib/libvcl/vcc_var.c

index 391212d23d219307fadb38717092b5e222bfacc3..150e5b571dbd4ed16fdfc50ea791e7592e15721e 100644 (file)
@@ -74,7 +74,7 @@ int VRT_rewrite(const char *, const char *);
 void VRT_error(struct sess *, unsigned, const char *);
 int VRT_switch_config(const char *);
 
-enum gethdr_e { HDR_REQ, HDR_RESP };
+enum gethdr_e { HDR_REQ, HDR_RESP, HDR_OBJ, HDR_BEREQ };
 char *VRT_GetHdr(struct sess *, enum gethdr_e where, const char *);
 void VRT_handling(struct sess *sp, unsigned hand);
 
index b864afd51970d57b0c6d229919e769b5ce08ec73..d1776824a550ca8040a0d2a1850d55cd723a3a8c 100644 (file)
@@ -430,7 +430,7 @@ vcl_output_lang_h(struct vsb *sb)
        vsb_cat(sb, "void VRT_error(struct sess *, unsigned, const char *);\n");
        vsb_cat(sb, "int VRT_switch_config(const char *);\n");
        vsb_cat(sb, "\n");
-       vsb_cat(sb, "enum gethdr_e { HDR_REQ, HDR_RESP };\n");
+       vsb_cat(sb, "enum gethdr_e { HDR_REQ, HDR_RESP, HDR_OBJ, HDR_BEREQ };\n");
        vsb_cat(sb, "char *VRT_GetHdr(struct sess *, enum gethdr_e where, const char *);\n");
        vsb_cat(sb, "void VRT_handling(struct sess *sp, unsigned hand);\n");
        vsb_cat(sb, "\n");
index eb9a522d04f2190d01f9d852d2f722ebcc3a8fb2..12e5a0b00597b81d6dd30884936f574c8a077b3f 100644 (file)
@@ -49,8 +49,11 @@ vcc_StringVal(struct tokenlist *tl)
                EncToken(tl->fb, tl->t);
                vcc_NextToken(tl);
                return;
-       } 
-       ExpectErr(tl, VAR);
+       } else if (tl->t->tok != VAR) {
+               vsb_printf(tl->sb, "Expected string variable or constant\n");
+               vcc_ErrWhere(tl, tl->t);
+               return;
+       }
        ERRCHK(tl);
        vp = vcc_FindVar(tl, tl->t, vcc_vars);
        ERRCHK(tl);
@@ -88,18 +91,27 @@ HeaderVar(struct tokenlist *tl, const struct token *t, const struct var *vh)
        memcpy(p, t->b, i);
        p[i] = '\0';
        v->name = p;
+       v->access = V_RW;
        v->fmt = STRING;
        v->methods = vh->methods;
        if (!memcmp(vh->name, "req.", 4))
                wh = "HDR_REQ";
        else if (!memcmp(vh->name, "resp.", 5))
                wh = "HDR_RESP";
+       else if (!memcmp(vh->name, "obj.", 4))
+               wh = "HDR_OBJ";
+       else if (!memcmp(vh->name, "bereq.", 6))
+               wh = "HDR_BEREQ";
        else
                assert(0 == 1);
        asprintf(&p, "VRT_GetHdr(sp, %s, \"\\%03o%s:\")", wh,
            (unsigned)(strlen(v->name + vh->len) + 1), v->name + vh->len);
-       assert(p != NULL);
+       AN(p);
        v->rname = p;
+       asprintf(&p, "VRT_SetHdr(sp, %s, \"\\%03o%s:\")", wh,
+           (unsigned)(strlen(v->name + vh->len) + 1), v->name + vh->len);
+       AN(p);
+       v->lname = p;
        return (v);
 }