Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
ef74b856
Commit
ef74b856
authored
Feb 19, 2012
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move the busyobj reference from worker to req
parent
a1cdab13
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
161 additions
and
174 deletions
+161
-174
cache.h
bin/varnishd/cache/cache.h
+2
-3
cache_backend.c
bin/varnishd/cache/cache_backend.c
+2
-2
cache_ban.c
bin/varnishd/cache/cache_ban.c
+1
-1
cache_center.c
bin/varnishd/cache/cache_center.c
+70
-66
cache_dir.c
bin/varnishd/cache/cache_dir.c
+1
-1
cache_dir_dns.c
bin/varnishd/cache/cache_dir_dns.c
+2
-2
cache_fetch.c
bin/varnishd/cache/cache_fetch.c
+30
-28
cache_hash.c
bin/varnishd/cache/cache_hash.c
+6
-6
cache_http.c
bin/varnishd/cache/cache_http.c
+1
-1
cache_panic.c
bin/varnishd/cache/cache_panic.c
+6
-6
cache_pipe.c
bin/varnishd/cache/cache_pipe.c
+11
-9
cache_session.c
bin/varnishd/cache/cache_session.c
+0
-17
cache_vrt.c
bin/varnishd/cache/cache_vrt.c
+2
-2
cache_vrt_var.c
bin/varnishd/cache/cache_vrt_var.c
+27
-30
No files found.
bin/varnishd/cache/cache.h
View file @
ef74b856
...
...
@@ -316,7 +316,6 @@ struct worker {
struct
ws
aws
[
1
];
struct
busyobj
*
busyobj
;
/* Temporary accounting */
struct
acct
acct_tmp
;
...
...
@@ -551,6 +550,7 @@ struct req {
/* The busy objhead we sleep on */
struct
objhead
*
hash_objhead
;
struct
busyobj
*
busyobj
;
/* Built Vary string */
uint8_t
*
vary_b
;
...
...
@@ -750,7 +750,7 @@ struct storage *FetchStorage(struct busyobj *, ssize_t sz);
int
FetchError
(
struct
busyobj
*
,
const
char
*
error
);
int
FetchError2
(
struct
busyobj
*
,
const
char
*
error
,
const
char
*
more
);
int
FetchHdr
(
struct
sess
*
sp
,
int
need_host_hdr
,
int
sendbody
);
int
FetchBody
(
struct
worker
*
w
,
struct
object
*
obj
);
int
FetchBody
(
struct
worker
*
w
,
struct
busyobj
*
bo
,
struct
object
*
obj
);
int
FetchReqBody
(
const
struct
sess
*
sp
,
int
sendbody
);
void
Fetch_Init
(
void
);
...
...
@@ -894,7 +894,6 @@ unsigned WRW_Write(struct worker *w, const void *ptr, int len);
unsigned
WRW_WriteH
(
struct
worker
*
w
,
const
txt
*
hh
,
const
char
*
suf
);
/* cache_session.c [SES] */
struct
sess
*
SES_Alloc
(
void
);
void
SES_Close
(
struct
sess
*
sp
,
const
char
*
reason
);
void
SES_Delete
(
struct
sess
*
sp
,
const
char
*
reason
,
double
now
);
void
SES_Charge
(
struct
sess
*
sp
);
...
...
bin/varnishd/cache/cache_backend.c
View file @
ef74b856
...
...
@@ -89,8 +89,8 @@ VBE_ReleaseConn(struct vbc *vc)
#define FIND_TMO(tmx, dst, sp, be) \
do { \
CHECK_OBJ_NOTNULL(sp->
wrk
->busyobj, BUSYOBJ_MAGIC); \
dst = sp->
wrk
->busyobj->tmx; \
CHECK_OBJ_NOTNULL(sp->
req
->busyobj, BUSYOBJ_MAGIC); \
dst = sp->
req
->busyobj->tmx; \
if (dst == 0.0) \
dst = be->tmx; \
if (dst == 0.0) \
...
...
bin/varnishd/cache/cache_ban.c
View file @
ef74b856
...
...
@@ -796,7 +796,7 @@ ban_CheckLast(void)
* Ban lurker thread
*/
static
int
static
int
ban_lurker_work
(
struct
worker
*
wrk
,
unsigned
pass
)
{
struct
ban
*
b
,
*
b0
,
*
b2
;
...
...
bin/varnishd/cache/cache_center.c
View file @
ef74b856
This diff is collapsed.
Click to expand it.
bin/varnishd/cache/cache_dir.c
View file @
ef74b856
...
...
@@ -120,7 +120,7 @@ VDI_GetFd(const struct director *d, struct sess *sp)
CHECK_OBJ_NOTNULL
(
d
,
DIRECTOR_MAGIC
);
vc
=
d
->
getfd
(
d
,
sp
);
if
(
vc
!=
NULL
)
{
vc
->
vsl
=
sp
->
wrk
->
busyobj
->
vsl
;
vc
->
vsl
=
sp
->
req
->
busyobj
->
vsl
;
vc
->
orig_vsl_id
=
vc
->
vsl
->
wid
;
vc
->
vsl
->
wid
=
vc
->
vsl_id
;
}
...
...
bin/varnishd/cache/cache_dir_dns.c
View file @
ef74b856
...
...
@@ -347,8 +347,8 @@ vdi_dns_find_backend(const struct sess *sp, struct vdi_dns *vs)
/* bereq is only present after recv et. al, otherwise use req (ie:
* use req for health checks in vcl_recv and such).
*/
if
(
sp
->
wrk
->
busyobj
!=
NULL
&&
sp
->
wrk
->
busyobj
->
bereq
)
hp
=
sp
->
wrk
->
busyobj
->
bereq
;
if
(
sp
->
req
->
busyobj
!=
NULL
&&
sp
->
req
->
busyobj
->
bereq
)
hp
=
sp
->
req
->
busyobj
->
bereq
;
else
hp
=
sp
->
req
->
http
;
...
...
bin/varnishd/cache/cache_fetch.c
View file @
ef74b856
...
...
@@ -46,7 +46,7 @@ static unsigned fetchfrag;
* We want to issue the first error we encounter on fetching and
* supress the rest. This function does that.
*
* Other code is allowed to look at
wrk
->busyobj->fetch_failed to bail out
* Other code is allowed to look at
sp->req
->busyobj->fetch_failed to bail out
*
* For convenience, always return -1
*/
...
...
@@ -385,33 +385,37 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
{
struct
vbc
*
vc
;
struct
worker
*
wrk
;
struct
req
*
req
;
struct
busyobj
*
bo
;
struct
http
*
hp
;
int
retry
=
-
1
;
int
i
;
struct
http_conn
*
htc
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
wrk
=
sp
->
wrk
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
CHECK_OBJ_NOTNULL
(
wrk
->
busyobj
,
BUSYOBJ_MAGIC
);
htc
=
&
wrk
->
busyobj
->
htc
;
req
=
sp
->
req
;
CHECK_OBJ_NOTNULL
(
req
,
REQ_MAGIC
);
bo
=
req
->
busyobj
;
CHECK_OBJ_NOTNULL
(
bo
,
BUSYOBJ_MAGIC
);
htc
=
&
bo
->
htc
;
AN
(
sp
->
req
->
director
);
AZ
(
sp
->
req
->
obj
);
AN
(
req
->
director
);
AZ
(
req
->
obj
);
if
(
sp
->
req
->
objcore
!=
NULL
)
{
/* pass has no objcore */
CHECK_OBJ_NOTNULL
(
sp
->
req
->
objcore
,
OBJCORE_MAGIC
);
AN
(
sp
->
req
->
objcore
->
flags
&
OC_F_BUSY
);
if
(
req
->
objcore
!=
NULL
)
{
/* pass has no objcore */
CHECK_OBJ_NOTNULL
(
req
->
objcore
,
OBJCORE_MAGIC
);
AN
(
req
->
objcore
->
flags
&
OC_F_BUSY
);
}
hp
=
wrk
->
busyobj
->
bereq
;
hp
=
bo
->
bereq
;
wrk
->
busyobj
->
vbc
=
VDI_GetFd
(
NULL
,
sp
);
if
(
wrk
->
busyobj
->
vbc
==
NULL
)
{
VSLb
(
sp
->
req
->
vsl
,
SLT_FetchError
,
"no backend connection"
);
bo
->
vbc
=
VDI_GetFd
(
NULL
,
sp
);
if
(
bo
->
vbc
==
NULL
)
{
VSLb
(
req
->
vsl
,
SLT_FetchError
,
"no backend connection"
);
return
(
-
1
);
}
vc
=
wrk
->
busyobj
->
vbc
;
vc
=
bo
->
vbc
;
if
(
vc
->
recycled
)
retry
=
1
;
...
...
@@ -421,7 +425,7 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
* because the backend may be chosen by a director.
*/
if
(
need_host_hdr
)
VDI_AddHostHeader
(
wrk
->
busyobj
->
bereq
,
vc
);
VDI_AddHostHeader
(
bo
->
bereq
,
vc
);
(
void
)
VTCP_blocking
(
vc
->
fd
);
/* XXX: we should timeout instead */
WRW_Reserve
(
wrk
,
&
vc
->
fd
,
sp
->
t_req
);
/* XXX t_resp ? */
...
...
@@ -430,10 +434,10 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
/* Deal with any message-body the request might have */
i
=
FetchReqBody
(
sp
,
sendbody
);
if
(
WRW_FlushRelease
(
wrk
)
||
i
>
0
)
{
VSLb
(
sp
->
req
->
vsl
,
SLT_FetchError
,
VSLb
(
req
->
vsl
,
SLT_FetchError
,
"backend write error: %d (%s)"
,
errno
,
strerror
(
errno
));
VDI_CloseFd
(
wrk
,
&
wrk
->
busyobj
->
vbc
);
VDI_CloseFd
(
wrk
,
&
bo
->
vbc
);
/* XXX: other cleanup ? */
return
(
retry
);
}
...
...
@@ -446,7 +450,7 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
/* Receive response */
HTC_Init
(
htc
,
wrk
->
busyobj
->
ws
,
vc
->
fd
,
vc
->
vsl
,
HTC_Init
(
htc
,
bo
->
ws
,
vc
->
fd
,
vc
->
vsl
,
cache_param
->
http_resp_size
,
cache_param
->
http_resp_hdr_len
);
...
...
@@ -455,10 +459,10 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
i
=
HTC_Rx
(
htc
);
if
(
i
<
0
)
{
VSLb
(
sp
->
req
->
vsl
,
SLT_FetchError
,
VSLb
(
req
->
vsl
,
SLT_FetchError
,
"http first read error: %d %d (%s)"
,
i
,
errno
,
strerror
(
errno
));
VDI_CloseFd
(
wrk
,
&
wrk
->
busyobj
->
vbc
);
VDI_CloseFd
(
wrk
,
&
bo
->
vbc
);
/* XXX: other cleanup ? */
/* Retryable if we never received anything */
return
(
i
==
-
1
?
retry
:
-
1
);
...
...
@@ -469,20 +473,20 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
while
(
i
==
0
)
{
i
=
HTC_Rx
(
htc
);
if
(
i
<
0
)
{
VSLb
(
sp
->
req
->
vsl
,
SLT_FetchError
,
VSLb
(
req
->
vsl
,
SLT_FetchError
,
"http first read error: %d %d (%s)"
,
i
,
errno
,
strerror
(
errno
));
VDI_CloseFd
(
wrk
,
&
wrk
->
busyobj
->
vbc
);
VDI_CloseFd
(
wrk
,
&
bo
->
vbc
);
/* XXX: other cleanup ? */
return
(
-
1
);
}
}
hp
=
wrk
->
busyobj
->
beresp
;
hp
=
bo
->
beresp
;
if
(
http_DissectResponse
(
hp
,
htc
))
{
VSLb
(
sp
->
req
->
vsl
,
SLT_FetchError
,
"http format error"
);
VDI_CloseFd
(
wrk
,
&
wrk
->
busyobj
->
vbc
);
VSLb
(
req
->
vsl
,
SLT_FetchError
,
"http format error"
);
VDI_CloseFd
(
wrk
,
&
bo
->
vbc
);
/* XXX: other cleanup ? */
return
(
-
1
);
}
...
...
@@ -492,17 +496,15 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
/*--------------------------------------------------------------------*/
int
FetchBody
(
struct
worker
*
wrk
,
struct
object
*
obj
)
FetchBody
(
struct
worker
*
wrk
,
struct
busyobj
*
bo
,
struct
object
*
obj
)
{
int
cls
;
struct
storage
*
st
;
int
mklen
;
ssize_t
cl
;
struct
http_conn
*
htc
;
struct
busyobj
*
bo
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
bo
=
wrk
->
busyobj
;
CHECK_OBJ_NOTNULL
(
bo
,
BUSYOBJ_MAGIC
);
AZ
(
bo
->
fetch_obj
);
CHECK_OBJ_NOTNULL
(
bo
->
vbc
,
VBC_MAGIC
);
...
...
bin/varnishd/cache/cache_hash.c
View file @
ef74b856
...
...
@@ -443,16 +443,16 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
AN
(
oc
->
flags
&
OC_F_BUSY
);
oc
->
refcnt
=
1
;
AZ
(
wrk
->
busyobj
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
->
vsl
->
wid
=
sp
->
vsl_id
;
AZ
(
sp
->
req
->
busyobj
);
sp
->
req
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
sp
->
req
->
busyobj
->
vsl
->
wid
=
sp
->
vsl_id
;
VRY_Validate
(
sp
->
req
->
vary_b
);
if
(
sp
->
req
->
vary_l
!=
NULL
)
wrk
->
busyobj
->
vary
=
sp
->
req
->
vary_b
;
sp
->
req
->
busyobj
->
vary
=
sp
->
req
->
vary_b
;
else
wrk
->
busyobj
->
vary
=
NULL
;
oc
->
busyobj
=
wrk
->
busyobj
;
sp
->
req
->
busyobj
->
vary
=
NULL
;
oc
->
busyobj
=
sp
->
req
->
busyobj
;
/*
* Busy objects go on the tail, so they will not trip up searches.
...
...
bin/varnishd/cache/cache_http.c
View file @
ef74b856
...
...
@@ -854,7 +854,7 @@ http_FilterReq(const struct sess *sp, unsigned how)
{
struct
http
*
hp
;
hp
=
sp
->
wrk
->
busyobj
->
bereq
;
hp
=
sp
->
req
->
busyobj
->
bereq
;
CHECK_OBJ_NOTNULL
(
hp
,
HTTP_MAGIC
);
hp
->
logtag
=
HTTP_Tx
;
...
...
bin/varnishd/cache/cache_panic.c
View file @
ef74b856
...
...
@@ -197,10 +197,6 @@ pan_wrk(const struct worker *wrk)
VSB_printf
(
pan_vsp
,
" worker = %p {
\n
"
,
wrk
);
pan_ws
(
wrk
->
aws
,
4
);
if
(
wrk
->
busyobj
!=
NULL
&&
wrk
->
busyobj
->
bereq
->
ws
!=
NULL
)
pan_http
(
"bereq"
,
wrk
->
busyobj
->
bereq
,
4
);
if
(
wrk
->
busyobj
!=
NULL
&&
wrk
->
busyobj
->
beresp
->
ws
!=
NULL
)
pan_http
(
"beresp"
,
wrk
->
busyobj
->
beresp
,
4
);
VSB_printf
(
pan_vsp
,
" },
\n
"
);
}
...
...
@@ -221,6 +217,10 @@ pan_busyobj(const struct busyobj *bo)
VSB_printf
(
pan_vsp
,
" },
\n
"
);
if
(
VALID_OBJ
(
bo
->
vbc
,
BACKEND_MAGIC
))
pan_vbc
(
bo
->
vbc
);
if
(
bo
->
bereq
->
ws
!=
NULL
)
pan_http
(
"bereq"
,
bo
->
bereq
,
4
);
if
(
bo
->
beresp
->
ws
!=
NULL
)
pan_http
(
"beresp"
,
bo
->
beresp
,
4
);
}
...
...
@@ -261,8 +261,8 @@ pan_sess(const struct sess *sp)
VSB_printf
(
pan_vsp
,
" restarts = %d, esi_level = %d
\n
"
,
sp
->
req
->
restarts
,
sp
->
req
->
esi_level
);
if
(
sp
->
wrk
->
busyobj
!=
NULL
)
pan_busyobj
(
sp
->
wrk
->
busyobj
);
if
(
sp
->
req
->
busyobj
!=
NULL
)
pan_busyobj
(
sp
->
req
->
busyobj
);
pan_ws
(
sp
->
req
->
ws
,
2
);
pan_http
(
"req"
,
sp
->
req
->
http
,
2
);
...
...
bin/varnishd/cache/cache_pipe.c
View file @
ef74b856
...
...
@@ -63,31 +63,33 @@ void
PipeSession
(
struct
sess
*
sp
)
{
struct
vbc
*
vc
;
struct
worker
*
w
;
struct
worker
*
w
rk
;
struct
pollfd
fds
[
2
];
struct
busyobj
*
bo
;
int
i
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
,
WORKER_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
busyobj
,
BUSYOBJ_MAGIC
);
w
=
sp
->
wrk
;
bo
=
sp
->
req
->
busyobj
;
CHECK_OBJ_NOTNULL
(
bo
,
BUSYOBJ_MAGIC
);
wrk
=
sp
->
wrk
;
vc
=
VDI_GetFd
(
NULL
,
sp
);
if
(
vc
==
NULL
)
return
;
sp
->
wrk
->
busyobj
->
vbc
=
vc
;
/* For panic dumping */
bo
->
vbc
=
vc
;
/* For panic dumping */
(
void
)
VTCP_blocking
(
vc
->
fd
);
WRW_Reserve
(
w
,
&
vc
->
fd
,
sp
->
t_req
);
WRW_Reserve
(
w
rk
,
&
vc
->
fd
,
sp
->
t_req
);
sp
->
wrk
->
acct_tmp
.
hdrbytes
+=
http_Write
(
w
,
sp
->
wrk
->
busyobj
->
bereq
,
0
);
http_Write
(
w
rk
,
bo
->
bereq
,
0
);
if
(
sp
->
req
->
htc
->
pipeline
.
b
!=
NULL
)
sp
->
wrk
->
acct_tmp
.
bodybytes
+=
WRW_Write
(
w
,
sp
->
req
->
htc
->
pipeline
.
b
,
WRW_Write
(
w
rk
,
sp
->
req
->
htc
->
pipeline
.
b
,
Tlen
(
sp
->
req
->
htc
->
pipeline
));
i
=
WRW_FlushRelease
(
w
);
i
=
WRW_FlushRelease
(
w
rk
);
if
(
i
)
{
SES_Close
(
sp
,
"pipe"
);
...
...
@@ -132,5 +134,5 @@ PipeSession(struct sess *sp)
}
SES_Close
(
sp
,
"pipe"
);
VDI_CloseFd
(
sp
->
wrk
,
&
vc
);
sp
->
wrk
->
busyobj
->
vbc
=
NULL
;
bo
->
vbc
=
NULL
;
}
bin/varnishd/cache/cache_session.c
View file @
ef74b856
...
...
@@ -111,22 +111,6 @@ ses_new(struct sesspool *pp)
return
(
sp
);
}
/*--------------------------------------------------------------------
* Allocate a session for use by background threads.
*/
struct
sess
*
SES_Alloc
(
void
)
{
struct
sess
*
sp
;
ALLOC_OBJ
(
sp
,
SESS_MAGIC
);
AN
(
sp
);
ses_setup
(
sp
);
/* XXX: sp->req ? */
return
(
sp
);
}
/*--------------------------------------------------------------------
* The pool-task function for sessions
*/
...
...
@@ -148,7 +132,6 @@ ses_pool_task(struct worker *wrk, void *arg)
sp
=
NULL
;
/* Cannot access sp any longer */
THR_SetSession
(
NULL
);
WS_Assert
(
wrk
->
aws
);
AZ
(
wrk
->
busyobj
);
AZ
(
wrk
->
wrw
);
assert
(
wrk
->
vsl
->
wlp
==
wrk
->
vsl
->
wlb
);
if
(
cache_param
->
diag_bitmap
&
0x00040000
)
{
...
...
bin/varnishd/cache/cache_vrt.c
View file @
ef74b856
...
...
@@ -101,10 +101,10 @@ vrt_selecthttp(const struct sess *sp, enum gethdr_e where)
hp
=
sp
->
req
->
http
;
break
;
case
HDR_BEREQ
:
hp
=
sp
->
wrk
->
busyobj
->
bereq
;
hp
=
sp
->
req
->
busyobj
->
bereq
;
break
;
case
HDR_BERESP
:
hp
=
sp
->
wrk
->
busyobj
->
beresp
;
hp
=
sp
->
req
->
busyobj
->
beresp
;
break
;
case
HDR_RESP
:
hp
=
sp
->
req
->
resp
;
...
...
bin/varnishd/cache/cache_vrt_var.c
View file @
ef74b856
...
...
@@ -84,15 +84,15 @@ VRT_r_##obj##_##hdr(const struct sess *sp) \
VRT_DO_HDR
(
req
,
request
,
sp
->
req
->
http
,
HTTP_HDR_REQ
)
VRT_DO_HDR
(
req
,
url
,
sp
->
req
->
http
,
HTTP_HDR_URL
)
VRT_DO_HDR
(
req
,
proto
,
sp
->
req
->
http
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
bereq
,
request
,
sp
->
wrk
->
busyobj
->
bereq
,
HTTP_HDR_REQ
)
VRT_DO_HDR
(
bereq
,
url
,
sp
->
wrk
->
busyobj
->
bereq
,
HTTP_HDR_URL
)
VRT_DO_HDR
(
bereq
,
proto
,
sp
->
wrk
->
busyobj
->
bereq
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
bereq
,
request
,
sp
->
req
->
busyobj
->
bereq
,
HTTP_HDR_REQ
)
VRT_DO_HDR
(
bereq
,
url
,
sp
->
req
->
busyobj
->
bereq
,
HTTP_HDR_URL
)
VRT_DO_HDR
(
bereq
,
proto
,
sp
->
req
->
busyobj
->
bereq
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
obj
,
proto
,
sp
->
req
->
obj
->
http
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
obj
,
response
,
sp
->
req
->
obj
->
http
,
HTTP_HDR_RESPONSE
)
VRT_DO_HDR
(
resp
,
proto
,
sp
->
req
->
resp
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
resp
,
response
,
sp
->
req
->
resp
,
HTTP_HDR_RESPONSE
)
VRT_DO_HDR
(
beresp
,
proto
,
sp
->
wrk
->
busyobj
->
beresp
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
beresp
,
response
,
sp
->
wrk
->
busyobj
->
beresp
,
HTTP_HDR_RESPONSE
)
VRT_DO_HDR
(
beresp
,
proto
,
sp
->
req
->
busyobj
->
beresp
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
beresp
,
response
,
sp
->
req
->
busyobj
->
beresp
,
HTTP_HDR_RESPONSE
)
/*--------------------------------------------------------------------*/
...
...
@@ -114,7 +114,7 @@ VRT_r_##obj##_status(const struct sess *sp) \
}
VRT_DO_STATUS
(
obj
,
sp
->
req
->
obj
->
http
)
VRT_DO_STATUS
(
beresp
,
sp
->
wrk
->
busyobj
->
beresp
)
VRT_DO_STATUS
(
beresp
,
sp
->
req
->
busyobj
->
beresp
)
VRT_DO_STATUS
(
resp
,
sp
->
req
->
resp
)
/*--------------------------------------------------------------------*/
...
...
@@ -130,14 +130,11 @@ VRT_l_beresp_saintmode(const struct sess *sp, double a)
struct
trouble
*
new
;
struct
trouble
*
tr
;
struct
trouble
*
tr2
;
struct
worker
*
wrk
;
struct
vbc
*
vbc
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
,
WORKER_MAGIC
);
wrk
=
sp
->
wrk
;
CHECK_OBJ_NOTNULL
(
wrk
->
busyobj
,
BUSYOBJ_MAGIC
);
vbc
=
wrk
->
busyobj
->
vbc
;
CHECK_OBJ_NOTNULL
(
sp
->
req
->
busyobj
,
BUSYOBJ_MAGIC
);
vbc
=
sp
->
req
->
busyobj
->
vbc
;
if
(
!
vbc
)
return
;
CHECK_OBJ_NOTNULL
(
vbc
,
VBC_MAGIC
);
...
...
@@ -187,14 +184,14 @@ void \
VRT_l_##dir##_##onm(const struct sess *sp, type a) \
{ \
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); \
sp->
wrk
->field = a; \
sp->
req
->field = a; \
} \
\
type \
VRT_r_##dir##_##onm(const struct sess *sp) \
{ \
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); \
return (sp->
wrk
->field); \
return (sp->
req
->field); \
}
VBERESP
(
beresp
,
unsigned
,
do_esi
,
busyobj
->
do_esi
)
...
...
@@ -235,8 +232,8 @@ VRT_l_bereq_##which(struct sess *sp, double num) \
{ \
\
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); \
CHECK_OBJ_NOTNULL(sp->
wrk
->busyobj, BUSYOBJ_MAGIC); \
sp->
wrk
->busyobj->which = (num > 0.0 ? num : 0.0); \
CHECK_OBJ_NOTNULL(sp->
req
->busyobj, BUSYOBJ_MAGIC); \
sp->
req
->busyobj->which = (num > 0.0 ? num : 0.0); \
} \
\
double __match_proto__() \
...
...
@@ -244,8 +241,8 @@ VRT_r_bereq_##which(struct sess *sp) \
{ \
\
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); \
CHECK_OBJ_NOTNULL(sp->
wrk
->busyobj, BUSYOBJ_MAGIC); \
return(sp->
wrk
->busyobj->which); \
CHECK_OBJ_NOTNULL(sp->
req
->busyobj, BUSYOBJ_MAGIC); \
return(sp->
req
->busyobj->which); \
}
BEREQ_TIMEOUT
(
connect_timeout
)
...
...
@@ -259,8 +256,8 @@ VRT_r_beresp_backend_name(const struct sess *sp)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
busyobj
->
vbc
,
VBC_MAGIC
);
return
(
sp
->
wrk
->
busyobj
->
vbc
->
backend
->
vcl_name
);
CHECK_OBJ_NOTNULL
(
sp
->
req
->
busyobj
->
vbc
,
VBC_MAGIC
);
return
(
sp
->
req
->
busyobj
->
vbc
->
backend
->
vcl_name
);
}
struct
sockaddr_storage
*
...
...
@@ -268,8 +265,8 @@ VRT_r_beresp_backend_ip(const struct sess *sp)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
busyobj
->
vbc
,
VBC_MAGIC
);
return
(
sp
->
wrk
->
busyobj
->
vbc
->
addr
);
CHECK_OBJ_NOTNULL
(
sp
->
req
->
busyobj
->
vbc
,
VBC_MAGIC
);
return
(
sp
->
req
->
busyobj
->
vbc
->
addr
);
}
int
...
...
@@ -277,8 +274,8 @@ VRT_r_beresp_backend_port(const struct sess *sp)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
busyobj
->
vbc
,
VBC_MAGIC
);
return
(
VTCP_port
(
sp
->
wrk
->
busyobj
->
vbc
->
addr
));
CHECK_OBJ_NOTNULL
(
sp
->
req
->
busyobj
->
vbc
,
VBC_MAGIC
);
return
(
VTCP_port
(
sp
->
req
->
busyobj
->
vbc
->
addr
));
}
const
char
*
__match_proto__
()
...
...
@@ -298,7 +295,7 @@ VRT_l_beresp_storage(struct sess *sp, const char *str, ...)
char
*
b
;
va_start
(
ap
,
str
);
b
=
VRT_String
(
sp
->
wrk
->
busyobj
->
ws
,
NULL
,
str
,
ap
);
b
=
VRT_String
(
sp
->
req
->
busyobj
->
ws
,
NULL
,
str
,
ap
);
va_end
(
ap
);
sp
->
req
->
storage_hint
=
b
;
}
...
...
@@ -417,12 +414,12 @@ VRT_DO_EXP(obj, sp->req->obj->exp, keep, 0,
EXP_Rearm
(
sp
->
req
->
obj
);
vrt_wsp_exp
(
sp
,
sp
->
req
->
obj
->
xid
,
&
sp
->
req
->
obj
->
exp
);)
VRT_DO_EXP
(
beresp
,
sp
->
wrk
->
busyobj
->
exp
,
grace
,
0
,
vrt_wsp_exp
(
sp
,
sp
->
req
->
xid
,
&
sp
->
wrk
->
busyobj
->
exp
);)
VRT_DO_EXP
(
beresp
,
sp
->
wrk
->
busyobj
->
exp
,
ttl
,
0
,
vrt_wsp_exp
(
sp
,
sp
->
req
->
xid
,
&
sp
->
wrk
->
busyobj
->
exp
);)
VRT_DO_EXP
(
beresp
,
sp
->
wrk
->
busyobj
->
exp
,
keep
,
0
,
vrt_wsp_exp
(
sp
,
sp
->
req
->
xid
,
&
sp
->
wrk
->
busyobj
->
exp
);)
VRT_DO_EXP
(
beresp
,
sp
->
req
->
busyobj
->
exp
,
grace
,
0
,
vrt_wsp_exp
(
sp
,
sp
->
req
->
xid
,
&
sp
->
req
->
busyobj
->
exp
);)
VRT_DO_EXP
(
beresp
,
sp
->
req
->
busyobj
->
exp
,
ttl
,
0
,
vrt_wsp_exp
(
sp
,
sp
->
req
->
xid
,
&
sp
->
req
->
busyobj
->
exp
);)
VRT_DO_EXP
(
beresp
,
sp
->
req
->
busyobj
->
exp
,
keep
,
0
,
vrt_wsp_exp
(
sp
,
sp
->
req
->
xid
,
&
sp
->
req
->
busyobj
->
exp
);)
/*--------------------------------------------------------------------
* req.xid
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment