From: phk Date: Sun, 18 Jun 2006 10:10:45 +0000 (+0000) Subject: Implement req.request properly X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18deeae2dd6dc24c9bded416690324bd9ebadd16;p=varnish Implement req.request properly git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@202 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index 10cfc696..68e66bb6 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -83,6 +83,7 @@ struct http *http_New(void); void http_Delete(struct http *hp); int http_GetHdr(struct http *hp, const char *hdr, char **ptr); int http_GetHdrField(struct http *hp, const char *hdr, const char *field, char **ptr); +int http_GetReq(struct http *hp, char **b); int http_GetStatus(struct http *hp); int http_HdrIs(struct http *hp, const char *hdr, const char *val); int http_GetTail(struct http *hp, unsigned len, char **b, char **e); diff --git a/varnish-cache/bin/varnishd/cache_http.c b/varnish-cache/bin/varnishd/cache_http.c index 35924c99..25358edb 100644 --- a/varnish-cache/bin/varnishd/cache_http.c +++ b/varnish-cache/bin/varnishd/cache_http.c @@ -147,6 +147,15 @@ http_HdrIs(struct http *hp, const char *hdr, const char *val) return (0); } +int +http_GetReq(struct http *hp, char **b) +{ + if (hp->req == NULL) + return (0); + *b = hp->req; + return (1); +} + int http_GetURL(struct http *hp, char **b) { diff --git a/varnish-cache/bin/varnishd/cache_vcl.c b/varnish-cache/bin/varnishd/cache_vcl.c index 8d96b534..8d710bb6 100644 --- a/varnish-cache/bin/varnishd/cache_vcl.c +++ b/varnish-cache/bin/varnishd/cache_vcl.c @@ -273,3 +273,14 @@ VCL_GetHdr(VCL_FARGS, const char *n) return (NULL); return (p); } + +char * +VCL_GetReq(VCL_FARGS) +{ + char *p; + + assert(sess != NULL); + assert(sess->http != NULL); + assert(http_GetReq(sess->http, &p)); + return (p); +} diff --git a/varnish-cache/include/vcl_lang.h b/varnish-cache/include/vcl_lang.h index 5242ce7e..10c786e7 100644 --- a/varnish-cache/include/vcl_lang.h +++ b/varnish-cache/include/vcl_lang.h @@ -101,6 +101,7 @@ void VCL_error(VCL_FARGS, unsigned, const char *); int VCL_switch_config(const char *); char *VCL_GetHdr(VCL_FARGS, const char *); +char *VCL_GetReq(VCL_FARGS); typedef void vcl_init_f(void); typedef void vcl_func_f(VCL_FARGS); diff --git a/varnish-cache/lib/libvcl/vcl_compile.c b/varnish-cache/lib/libvcl/vcl_compile.c index febd4e4a..f1c73434 100644 --- a/varnish-cache/lib/libvcl/vcl_compile.c +++ b/varnish-cache/lib/libvcl/vcl_compile.c @@ -122,7 +122,7 @@ static struct var be_vars[] = { static struct var vars[] = { - { "req.request", STRING, 0, "\"GET\"" }, + { "req.request", STRING, 0, "VCL_GetReq(VCL_PASS_ARGS)" }, { "obj.valid", BOOL, 0, "sess->obj->valid" }, { "obj.cacheable", BOOL, 0, "sess->obj->cacheable" }, { "req.http.", HEADER, 0, NULL }, diff --git a/varnish-cache/lib/libvcl/vcl_fixed_token.c b/varnish-cache/lib/libvcl/vcl_fixed_token.c index e677105c..20ace698 100644 --- a/varnish-cache/lib/libvcl/vcl_fixed_token.c +++ b/varnish-cache/lib/libvcl/vcl_fixed_token.c @@ -500,6 +500,7 @@ vcl_output_lang_h(FILE *f) fputs("int VCL_switch_config(const char *);\n", f); fputs("\n", f); fputs("char *VCL_GetHdr(VCL_FARGS, const char *);\n", f); + fputs("char *VCL_GetReq(VCL_FARGS);\n", f); fputs("\n", f); fputs("typedef void vcl_init_f(void);\n", f); fputs("typedef void vcl_func_f(VCL_FARGS);\n", f);