Commit 2d53dfe4 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Start moving the backend VCL variables to use busyobj rather than req

parent 5800cf91
...@@ -63,38 +63,47 @@ vrt_do_string(const struct http *hp, int fld, ...@@ -63,38 +63,47 @@ vrt_do_string(const struct http *hp, int fld,
#define VRT_DO_HDR(obj, hdr, http, fld) \ #define VRT_DO_HDR(obj, hdr, http, fld) \
void \ void \
VRT_l_##obj##_##hdr(const struct req *req, const char *p, ...) \ VRT_l_##obj##_##hdr(const struct CPAR *px, const char *p, ...) \
{ \ { \
va_list ap; \ va_list ap; \
\ \
CHECK_OBJ_NOTNULL(req, REQ_MAGIC); \ CHECK_OBJ_NOTNULL(px, CMAGIC); \
va_start(ap, p); \ va_start(ap, p); \
vrt_do_string(http, fld, #obj "." #hdr, p, ap); \ vrt_do_string(http, fld, #obj "." #hdr, p, ap); \
va_end(ap); \ va_end(ap); \
} \ } \
\ \
const char * \ const char * \
VRT_r_##obj##_##hdr(const struct req *req) \ VRT_r_##obj##_##hdr(const struct CPAR *px) \
{ \ { \
CHECK_OBJ_NOTNULL(req, REQ_MAGIC); \ CHECK_OBJ_NOTNULL(px, CMAGIC); \
CHECK_OBJ_NOTNULL(http, HTTP_MAGIC); \ CHECK_OBJ_NOTNULL(http, HTTP_MAGIC); \
return (http->hd[fld].b); \ return (http->hd[fld].b); \
} }
VRT_DO_HDR(req, method, req->http, HTTP_HDR_METHOD) #define CPAR req
VRT_DO_HDR(req, request, req->http, HTTP_HDR_METHOD) #define CMAGIC REQ_MAGIC
VRT_DO_HDR(req, url, req->http, HTTP_HDR_URL) VRT_DO_HDR(req, method, px->http, HTTP_HDR_METHOD)
VRT_DO_HDR(req, proto, req->http, HTTP_HDR_PROTO) VRT_DO_HDR(req, request, px->http, HTTP_HDR_METHOD)
VRT_DO_HDR(bereq, method, req->busyobj->bereq, HTTP_HDR_METHOD) VRT_DO_HDR(req, url, px->http, HTTP_HDR_URL)
VRT_DO_HDR(bereq, request, req->busyobj->bereq, HTTP_HDR_METHOD) VRT_DO_HDR(req, proto, px->http, HTTP_HDR_PROTO)
VRT_DO_HDR(bereq, url, req->busyobj->bereq, HTTP_HDR_URL) VRT_DO_HDR(obj, proto, px->obj->http, HTTP_HDR_PROTO)
VRT_DO_HDR(bereq, proto, req->busyobj->bereq, HTTP_HDR_PROTO) VRT_DO_HDR(obj, response, px->obj->http, HTTP_HDR_RESPONSE)
VRT_DO_HDR(obj, proto, req->obj->http, HTTP_HDR_PROTO) VRT_DO_HDR(resp, proto, px->resp, HTTP_HDR_PROTO)
VRT_DO_HDR(obj, response, req->obj->http, HTTP_HDR_RESPONSE) VRT_DO_HDR(resp, response, px->resp, HTTP_HDR_RESPONSE)
VRT_DO_HDR(resp, proto, req->resp, HTTP_HDR_PROTO) #undef CPAR
VRT_DO_HDR(resp, response, req->resp, HTTP_HDR_RESPONSE) #undef CMAGIC
VRT_DO_HDR(beresp, proto, req->busyobj->beresp, HTTP_HDR_PROTO)
VRT_DO_HDR(beresp, response, req->busyobj->beresp, HTTP_HDR_RESPONSE) #define CPAR busyobj
#define CMAGIC BUSYOBJ_MAGIC
VRT_DO_HDR(bereq, method, px->bereq, HTTP_HDR_METHOD)
VRT_DO_HDR(bereq, request, px->bereq, HTTP_HDR_METHOD)
VRT_DO_HDR(bereq, url, px->bereq, HTTP_HDR_URL)
VRT_DO_HDR(bereq, proto, px->bereq, HTTP_HDR_PROTO)
VRT_DO_HDR(beresp, proto, px->beresp, HTTP_HDR_PROTO)
VRT_DO_HDR(beresp, response, px->beresp, HTTP_HDR_RESPONSE)
#undef CPAR
#undef CMAGIC
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
......
...@@ -241,25 +241,25 @@ sp_variables = ( ...@@ -241,25 +241,25 @@ sp_variables = (
'STRING', 'STRING',
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
'cR' 'cB'
), ),
('bereq.request', ('bereq.request',
'STRING', 'STRING',
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
'cR' 'cB'
), ),
('bereq.url', ('bereq.url',
'STRING', 'STRING',
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
'cR' 'cB'
), ),
('bereq.proto', ('bereq.proto',
'STRING', 'STRING',
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',), ( 'pipe', 'backend_fetch', 'pass', 'miss', 'backend_response',),
'cR' 'cB'
), ),
('bereq.http.', ('bereq.http.',
'HEADER', 'HEADER',
...@@ -289,7 +289,7 @@ sp_variables = ( ...@@ -289,7 +289,7 @@ sp_variables = (
'STRING', 'STRING',
( 'backend_response',), ( 'backend_response',),
( 'backend_response',), ( 'backend_response',),
'cR' 'cB'
), ),
('beresp.saintmode', ('beresp.saintmode',
'DURATION', 'DURATION',
...@@ -307,7 +307,7 @@ sp_variables = ( ...@@ -307,7 +307,7 @@ sp_variables = (
'STRING', 'STRING',
( 'backend_response',), ( 'backend_response',),
( 'backend_response',), ( 'backend_response',),
'cR' 'cB'
), ),
('beresp.http.', ('beresp.http.',
'HEADER', 'HEADER',
...@@ -859,10 +859,19 @@ def mk_proto(c, r=False): ...@@ -859,10 +859,19 @@ def mk_proto(c, r=False):
for i in c: for i in c:
if i == "c" and not r: if i == "c" and not r:
s += " const" s += " const"
if i == "R": elif i == "c":
pass
elif i == "R":
if r: if r:
s += " const" s += " const"
s += " struct req *" s += " struct req *"
elif i == "B":
if r:
s += " const"
s += " struct busyobj *"
else:
print("Unknown args-spec char '%s'" % i)
exit(1)
return s[1:] return s[1:]
...@@ -873,8 +882,13 @@ def mk_args(c, r=False): ...@@ -873,8 +882,13 @@ def mk_args(c, r=False):
for i in c: for i in c:
if i == "c": if i == "c":
continue; continue;
if i == "R": elif i == "R":
s += "req" s += "req"
elif i == "B":
s += "bo"
else:
print("Unknown args-spec char '%s'" % i)
exit(1)
if s != "" and not r: if s != "" and not r:
s += "," s += ","
return s return s
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment