Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
U
unique-xids
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
unique-xids
Commits
6c148642
Commit
6c148642
authored
Dec 26, 2011
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move obj and objcore from worker to req
parent
df85ad84
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
187 additions
and
189 deletions
+187
-189
cache.h
bin/varnishd/cache/cache.h
+2
-2
cache_backend.c
bin/varnishd/cache/cache_backend.c
+3
-3
cache_center.c
bin/varnishd/cache/cache_center.c
+98
-100
cache_esi_deliver.c
bin/varnishd/cache/cache_esi_deliver.c
+10
-10
cache_fetch.c
bin/varnishd/cache/cache_fetch.c
+4
-4
cache_gzip.c
bin/varnishd/cache/cache_gzip.c
+1
-1
cache_hash.c
bin/varnishd/cache/cache_hash.c
+6
-6
cache_panic.c
bin/varnishd/cache/cache_panic.c
+2
-2
cache_response.c
bin/varnishd/cache/cache_response.c
+23
-23
cache_rfc2616.c
bin/varnishd/cache/cache_rfc2616.c
+3
-3
cache_vrt.c
bin/varnishd/cache/cache_vrt.c
+10
-10
cache_vrt_var.c
bin/varnishd/cache/cache_vrt_var.c
+19
-19
stevedore.c
bin/varnishd/storage/stevedore.c
+4
-4
storage_persistent.c
bin/varnishd/storage/storage_persistent.c
+2
-2
No files found.
bin/varnishd/cache/cache.h
View file @
6c148642
...
...
@@ -329,8 +329,6 @@ struct worker {
struct
ws
ws
[
1
];
struct
object
*
obj
;
struct
objcore
*
objcore
;
struct
busyobj
*
busyobj
;
/* This is only here so VRT can find it */
...
...
@@ -622,6 +620,8 @@ struct req {
struct
http
*
resp
;
struct
ws
ws
[
1
];
struct
object
*
obj
;
struct
objcore
*
objcore
;
};
/*--------------------------------------------------------------------*/
...
...
bin/varnishd/cache/cache_backend.c
View file @
6c148642
...
...
@@ -227,7 +227,7 @@ vbe_NewConn(void)
/*--------------------------------------------------------------------
* It evaluates if a backend is healthy _for_a_specific_object_.
* That means that it relies on sp->
wrk
->objcore->objhead. This is mainly for
* That means that it relies on sp->
req
->objcore->objhead. This is mainly for
* saint-mode, but also takes backend->healthy into account. If
* cache_param->saintmode_threshold is 0, this is basically just a test of
* backend->healthy.
...
...
@@ -274,11 +274,11 @@ vbe_Healthy(const struct vdi_simple *vs, const struct sess *sp)
if
(
threshold
==
0
)
return
(
1
);
if
(
sp
->
wrk
->
objcore
==
NULL
)
if
(
sp
->
req
->
objcore
==
NULL
)
return
(
1
);
now
=
sp
->
t_req
;
target
=
(
uintptr_t
)(
sp
->
wrk
->
objcore
->
objhead
);
target
=
(
uintptr_t
)(
sp
->
req
->
objcore
->
objhead
);
old
=
NULL
;
retval
=
1
;
...
...
bin/varnishd/cache/cache_center.c
View file @
6c148642
This diff is collapsed.
Click to expand it.
bin/varnishd/cache/cache_esi_deliver.c
View file @
6c148642
...
...
@@ -58,8 +58,8 @@ ved_include(struct sess *sp, const char *src, const char *host)
(
void
)
WRW_FlushRelease
(
w
);
obj
=
sp
->
wrk
->
obj
;
sp
->
wrk
->
obj
=
NULL
;
obj
=
sp
->
req
->
obj
;
sp
->
req
->
obj
=
NULL
;
res_mode
=
sp
->
wrk
->
res_mode
;
/* Reset request to status before we started messing with it */
...
...
@@ -106,7 +106,7 @@ ved_include(struct sess *sp, const char *src, const char *host)
AN
(
sp
->
wrk
);
assert
(
sp
->
step
==
STP_DONE
);
sp
->
req
->
esi_level
--
;
sp
->
wrk
->
obj
=
obj
;
sp
->
req
->
obj
=
obj
;
sp
->
wrk
->
res_mode
=
res_mode
;
/* Reset the workspace */
...
...
@@ -231,7 +231,7 @@ ESI_Deliver(struct sess *sp)
int
i
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
st
=
sp
->
wrk
->
obj
->
esidata
;
st
=
sp
->
req
->
obj
->
esidata
;
AN
(
st
);
assert
(
sizeof
obuf
>=
1024
);
...
...
@@ -276,7 +276,7 @@ ESI_Deliver(struct sess *sp)
obufl
=
0
;
}
st
=
VTAILQ_FIRST
(
&
sp
->
wrk
->
obj
->
store
);
st
=
VTAILQ_FIRST
(
&
sp
->
req
->
obj
->
store
);
off
=
0
;
while
(
p
<
e
)
{
...
...
@@ -435,7 +435,7 @@ ved_deliver_byterange(const struct sess *sp, ssize_t low, ssize_t high)
//printf("BR %jd %jd\n", low, high);
lx
=
0
;
VTAILQ_FOREACH
(
st
,
&
sp
->
wrk
->
obj
->
store
,
list
)
{
VTAILQ_FOREACH
(
st
,
&
sp
->
req
->
obj
->
store
,
list
)
{
p
=
st
->
ptr
;
l
=
st
->
len
;
//printf("[0-] %jd %jd\n", lx, lx + l);
...
...
@@ -476,8 +476,8 @@ ESI_DeliverChild(const struct sess *sp)
uint32_t
ilen
;
uint8_t
*
dbits
;
if
(
!
sp
->
wrk
->
obj
->
gziped
)
{
VTAILQ_FOREACH
(
st
,
&
sp
->
wrk
->
obj
->
store
,
list
)
if
(
!
sp
->
req
->
obj
->
gziped
)
{
VTAILQ_FOREACH
(
st
,
&
sp
->
req
->
obj
->
store
,
list
)
ved_pretend_gzip
(
sp
,
st
->
ptr
,
st
->
len
);
return
;
}
...
...
@@ -489,7 +489,7 @@ ESI_DeliverChild(const struct sess *sp)
dbits
=
(
void
*
)
WS_Alloc
(
sp
->
wrk
->
ws
,
8
);
AN
(
dbits
);
obj
=
sp
->
wrk
->
obj
;
obj
=
sp
->
req
->
obj
;
CHECK_OBJ_NOTNULL
(
obj
,
OBJECT_MAGIC
);
start
=
obj
->
gzip_start
;
last
=
obj
->
gzip_last
;
...
...
@@ -554,7 +554,7 @@ ESI_DeliverChild(const struct sess *sp)
}
if
(
lpad
>
0
)
(
void
)
WRW_Write
(
sp
->
wrk
,
dbits
+
1
,
lpad
);
st
=
VTAILQ_LAST
(
&
sp
->
wrk
->
obj
->
store
,
storagehead
);
st
=
VTAILQ_LAST
(
&
sp
->
req
->
obj
->
store
,
storagehead
);
assert
(
st
->
len
>
8
);
p
=
st
->
ptr
+
st
->
len
-
8
;
...
...
bin/varnishd/cache/cache_fetch.c
View file @
6c148642
...
...
@@ -391,11 +391,11 @@ FetchHdr(struct sess *sp, int need_host_hdr)
htc
=
&
wrk
->
busyobj
->
htc
;
AN
(
sp
->
req
->
director
);
AZ
(
sp
->
wrk
->
obj
);
AZ
(
sp
->
req
->
obj
);
if
(
sp
->
wrk
->
objcore
!=
NULL
)
{
/* pass has no objcore */
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
objcore
,
OBJCORE_MAGIC
);
AN
(
sp
->
wrk
->
objcore
->
flags
&
OC_F_BUSY
);
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
);
}
hp
=
wrk
->
busyobj
->
bereq
;
...
...
bin/varnishd/cache/cache_gzip.c
View file @
6c148642
...
...
@@ -248,7 +248,7 @@ VGZ_ObufFull(const struct vgz *vg)
/*--------------------------------------------------------------------
* Keep the outbuffer supplied with storage and file it under the
* sp->
wrk
->obj as it fills.
* sp->
req
->obj as it fills.
*/
int
...
...
bin/varnishd/cache/cache_hash.c
View file @
6c148642
...
...
@@ -389,8 +389,8 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
* XXX: serialize fetch of all Vary's if grace is possible.
*/
AZ
(
sp
->
wrk
->
objcore
);
sp
->
wrk
->
objcore
=
grace_oc
;
/* XXX: Hack-ish */
AZ
(
sp
->
req
->
objcore
);
sp
->
req
->
objcore
=
grace_oc
;
/* XXX: Hack-ish */
if
(
oc
==
NULL
/* We found no live object */
&&
grace_oc
!=
NULL
/* There is a grace candidate */
&&
(
busy_oc
!=
NULL
/* Somebody else is already busy */
...
...
@@ -400,7 +400,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
oc
=
grace_oc
;
}
sp
->
wrk
->
objcore
=
NULL
;
sp
->
req
->
objcore
=
NULL
;
if
(
oc
!=
NULL
&&
!
sp
->
req
->
hash_always_miss
)
{
o
=
oc_getobj
(
sp
->
wrk
,
oc
);
...
...
@@ -580,13 +580,13 @@ HSH_Drop(struct worker *wrk)
struct
object
*
o
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
o
=
wrk
->
obj
;
o
=
wrk
->
sp
->
req
->
obj
;
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
AssertObjCorePassOrBusy
(
o
->
objcore
);
o
->
exp
.
ttl
=
-
1
.;
if
(
o
->
objcore
!=
NULL
)
/* Pass has no objcore */
HSH_Unbusy
(
wrk
);
(
void
)
HSH_Deref
(
wrk
,
NULL
,
&
wrk
->
obj
);
(
void
)
HSH_Deref
(
wrk
,
NULL
,
&
wrk
->
sp
->
req
->
obj
);
}
void
...
...
@@ -597,7 +597,7 @@ HSH_Unbusy(struct worker *wrk)
struct
objcore
*
oc
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
o
=
wrk
->
obj
;
o
=
wrk
->
sp
->
req
->
obj
;
CHECK_OBJ_NOTNULL
(
o
,
OBJECT_MAGIC
);
oc
=
o
->
objcore
;
CHECK_OBJ_NOTNULL
(
oc
,
OBJCORE_MAGIC
);
...
...
bin/varnishd/cache/cache_panic.c
View file @
6c148642
...
...
@@ -274,8 +274,8 @@ pan_sess(const struct sess *sp)
if
(
VALID_OBJ
(
sp
->
req
->
vcl
,
VCL_CONF_MAGIC
))
pan_vcl
(
sp
->
req
->
vcl
);
if
(
VALID_OBJ
(
sp
->
wrk
->
obj
,
OBJECT_MAGIC
))
pan_object
(
sp
->
wrk
->
obj
);
if
(
VALID_OBJ
(
sp
->
req
->
obj
,
OBJECT_MAGIC
))
pan_object
(
sp
->
req
->
obj
);
VSB_printf
(
pan_vsp
,
"},
\n
"
);
}
...
...
bin/varnishd/cache/cache_response.c
View file @
6c148642
...
...
@@ -41,7 +41,7 @@ res_dorange(const struct sess *sp, const char *r, ssize_t *plow, ssize_t *phigh)
{
ssize_t
low
,
high
,
has_low
;
assert
(
sp
->
wrk
->
obj
->
response
==
200
);
assert
(
sp
->
req
->
obj
->
response
==
200
);
if
(
strncmp
(
r
,
"bytes="
,
6
))
return
;
r
+=
6
;
...
...
@@ -57,7 +57,7 @@ res_dorange(const struct sess *sp, const char *r, ssize_t *plow, ssize_t *phigh)
r
++
;
}
if
(
low
>=
sp
->
wrk
->
obj
->
len
)
if
(
low
>=
sp
->
req
->
obj
->
len
)
return
;
if
(
*
r
!=
'-'
)
...
...
@@ -73,23 +73,23 @@ res_dorange(const struct sess *sp, const char *r, ssize_t *plow, ssize_t *phigh)
r
++
;
}
if
(
!
has_low
)
{
low
=
sp
->
wrk
->
obj
->
len
-
high
;
high
=
sp
->
wrk
->
obj
->
len
-
1
;
low
=
sp
->
req
->
obj
->
len
-
high
;
high
=
sp
->
req
->
obj
->
len
-
1
;
}
}
else
high
=
sp
->
wrk
->
obj
->
len
-
1
;
high
=
sp
->
req
->
obj
->
len
-
1
;
if
(
*
r
!=
'\0'
)
return
;
if
(
high
>=
sp
->
wrk
->
obj
->
len
)
high
=
sp
->
wrk
->
obj
->
len
-
1
;
if
(
high
>=
sp
->
req
->
obj
->
len
)
high
=
sp
->
req
->
obj
->
len
-
1
;
if
(
low
>
high
)
return
;
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
"Content-Range: bytes %jd-%jd/%jd"
,
(
intmax_t
)
low
,
(
intmax_t
)
high
,
(
intmax_t
)
sp
->
wrk
->
obj
->
len
);
(
intmax_t
)
low
,
(
intmax_t
)
high
,
(
intmax_t
)
sp
->
req
->
obj
->
len
);
http_Unset
(
sp
->
req
->
resp
,
H_Content_Length
);
assert
(
sp
->
wrk
->
res_mode
&
RES_LEN
);
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
...
...
@@ -112,9 +112,9 @@ RES_BuildHttp(const struct sess *sp)
http_ClrHeader
(
sp
->
req
->
resp
);
sp
->
req
->
resp
->
logtag
=
HTTP_Tx
;
http_CopyResp
(
sp
->
req
->
resp
,
sp
->
wrk
->
obj
->
http
);
http_CopyResp
(
sp
->
req
->
resp
,
sp
->
req
->
obj
->
http
);
http_FilterFields
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
sp
->
wrk
->
obj
->
http
,
HTTPH_A_DELIVER
);
sp
->
req
->
obj
->
http
,
HTTPH_A_DELIVER
);
if
(
!
(
sp
->
wrk
->
res_mode
&
RES_LEN
))
{
http_Unset
(
sp
->
req
->
resp
,
H_Content_Length
);
...
...
@@ -132,15 +132,15 @@ RES_BuildHttp(const struct sess *sp)
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
"Date: %s"
,
time_str
);
if
(
sp
->
req
->
xid
!=
sp
->
wrk
->
obj
->
xid
)
if
(
sp
->
req
->
xid
!=
sp
->
req
->
obj
->
xid
)
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
"X-Varnish: %u %u"
,
sp
->
req
->
xid
,
sp
->
wrk
->
obj
->
xid
);
"X-Varnish: %u %u"
,
sp
->
req
->
xid
,
sp
->
req
->
obj
->
xid
);
else
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
"X-Varnish: %u"
,
sp
->
req
->
xid
);
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
"Age: %.0f"
,
sp
->
wrk
->
obj
->
exp
.
age
+
sp
->
req
->
t_resp
-
sp
->
wrk
->
obj
->
exp
.
entered
);
sp
->
req
->
obj
->
exp
.
age
+
sp
->
req
->
t_resp
-
sp
->
req
->
obj
->
exp
.
entered
);
http_SetHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
"Via: 1.1 varnish"
);
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
resp
,
"Connection: %s"
,
sp
->
req
->
doclose
?
"close"
:
"keep-alive"
);
...
...
@@ -167,7 +167,7 @@ res_WriteGunzipObj(const struct sess *sp)
vg
=
VGZ_NewUngzip
(
sp
->
wrk
,
"U D -"
);
VGZ_Obuf
(
vg
,
obuf
,
sizeof
obuf
);
VTAILQ_FOREACH
(
st
,
&
sp
->
wrk
->
obj
->
store
,
list
)
{
VTAILQ_FOREACH
(
st
,
&
sp
->
req
->
obj
->
store
,
list
)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
st
,
STORAGE_MAGIC
);
u
+=
st
->
len
;
...
...
@@ -185,7 +185,7 @@ res_WriteGunzipObj(const struct sess *sp)
(
void
)
WRW_Flush
(
sp
->
wrk
);
}
(
void
)
VGZ_Destroy
(
&
vg
,
sp
->
vsl_id
);
assert
(
u
==
sp
->
wrk
->
obj
->
len
);
assert
(
u
==
sp
->
req
->
obj
->
len
);
}
/*--------------------------------------------------------------------*/
...
...
@@ -200,7 +200,7 @@ res_WriteDirObj(const struct sess *sp, ssize_t low, ssize_t high)
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
ptr
=
0
;
VTAILQ_FOREACH
(
st
,
&
sp
->
wrk
->
obj
->
store
,
list
)
{
VTAILQ_FOREACH
(
st
,
&
sp
->
req
->
obj
->
store
,
list
)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
st
,
STORAGE_MAGIC
);
u
+=
st
->
len
;
...
...
@@ -241,7 +241,7 @@ res_WriteDirObj(const struct sess *sp, ssize_t low, ssize_t high)
VSC_C_main
->
n_objwrite
++
;
(
void
)
WRW_Write
(
sp
->
wrk
,
st
->
ptr
+
off
,
len
);
}
assert
(
u
==
sp
->
wrk
->
obj
->
len
);
assert
(
u
==
sp
->
req
->
obj
->
len
);
}
/*--------------------------------------------------------------------
...
...
@@ -259,7 +259,7 @@ RES_WriteObj(struct sess *sp)
WRW_Reserve
(
sp
->
wrk
,
&
sp
->
fd
);
if
(
sp
->
wrk
->
obj
->
response
==
200
&&
if
(
sp
->
req
->
obj
->
response
==
200
&&
sp
->
req
->
http
->
conds
&&
RFC2616_Do_Cond
(
sp
))
{
sp
->
req
->
wantbody
=
0
;
...
...
@@ -272,13 +272,13 @@ RES_WriteObj(struct sess *sp)
* If nothing special planned, we can attempt Range support
*/
low
=
0
;
high
=
sp
->
wrk
->
obj
->
len
-
1
;
high
=
sp
->
req
->
obj
->
len
-
1
;
if
(
sp
->
req
->
wantbody
&&
(
sp
->
wrk
->
res_mode
&
RES_LEN
)
&&
!
(
sp
->
wrk
->
res_mode
&
(
RES_ESI
|
RES_ESI_CHILD
|
RES_GUNZIP
))
&&
cache_param
->
http_range_support
&&
sp
->
wrk
->
obj
->
response
==
200
&&
sp
->
req
->
obj
->
response
==
200
&&
http_GetHdr
(
sp
->
req
->
http
,
H_Range
,
&
r
))
res_dorange
(
sp
,
r
,
&
low
,
&
high
);
...
...
@@ -303,14 +303,14 @@ RES_WriteObj(struct sess *sp)
if
(
!
sp
->
req
->
wantbody
)
{
/* This was a HEAD or conditional request */
}
else
if
(
sp
->
wrk
->
obj
->
len
==
0
)
{
}
else
if
(
sp
->
req
->
obj
->
len
==
0
)
{
/* Nothing to do here */
}
else
if
(
sp
->
wrk
->
res_mode
&
RES_ESI
)
{
ESI_Deliver
(
sp
);
}
else
if
(
sp
->
wrk
->
res_mode
&
RES_ESI_CHILD
&&
sp
->
wrk
->
gzip_resp
)
{
ESI_DeliverChild
(
sp
);
}
else
if
(
sp
->
wrk
->
res_mode
&
RES_ESI_CHILD
&&
!
sp
->
wrk
->
gzip_resp
&&
sp
->
wrk
->
obj
->
gziped
)
{
!
sp
->
wrk
->
gzip_resp
&&
sp
->
req
->
obj
->
gziped
)
{
res_WriteGunzipObj
(
sp
);
}
else
if
(
sp
->
wrk
->
res_mode
&
RES_GUNZIP
)
{
res_WriteGunzipObj
(
sp
);
...
...
bin/varnishd/cache/cache_rfc2616.c
View file @
6c148642
...
...
@@ -319,18 +319,18 @@ RFC2616_Do_Cond(const struct sess *sp)
and If-Modified-Since if present*/
if
(
http_GetHdr
(
sp
->
req
->
http
,
H_If_Modified_Since
,
&
p
)
)
{
if
(
!
sp
->
wrk
->
obj
->
last_modified
)
if
(
!
sp
->
req
->
obj
->
last_modified
)
return
(
0
);
ims
=
VTIM_parse
(
p
);
if
(
ims
>
sp
->
t_req
)
/* [RFC2616 14.25] */
return
(
0
);
if
(
sp
->
wrk
->
obj
->
last_modified
>
ims
)
if
(
sp
->
req
->
obj
->
last_modified
>
ims
)
return
(
0
);
do_cond
=
1
;
}
if
(
http_GetHdr
(
sp
->
req
->
http
,
H_If_None_Match
,
&
p
)
&&
http_GetHdr
(
sp
->
wrk
->
obj
->
http
,
H_ETag
,
&
e
))
{
http_GetHdr
(
sp
->
req
->
obj
->
http
,
H_ETag
,
&
e
))
{
if
(
strcmp
(
p
,
e
)
!=
0
)
return
(
0
);
do_cond
=
1
;
...
...
bin/varnishd/cache/cache_vrt.c
View file @
6c148642
...
...
@@ -110,8 +110,8 @@ vrt_selecthttp(const struct sess *sp, enum gethdr_e where)
hp
=
sp
->
req
->
resp
;
break
;
case
HDR_OBJ
:
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
obj
,
OBJECT_MAGIC
);
hp
=
sp
->
wrk
->
obj
->
http
;
CHECK_OBJ_NOTNULL
(
sp
->
req
->
obj
,
OBJECT_MAGIC
);
hp
=
sp
->
req
->
obj
->
http
;
break
;
default:
INCOMPL
();
...
...
@@ -401,8 +401,8 @@ VRT_synth_page(const struct sess *sp, unsigned flags, const char *str, ...)
(
void
)
flags
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
obj
,
OBJECT_MAGIC
);
vsb
=
SMS_Makesynth
(
sp
->
wrk
->
obj
);
CHECK_OBJ_NOTNULL
(
sp
->
req
->
obj
,
OBJECT_MAGIC
);
vsb
=
SMS_Makesynth
(
sp
->
req
->
obj
);
AN
(
vsb
);
VSB_cat
(
vsb
,
str
);
...
...
@@ -415,10 +415,10 @@ VRT_synth_page(const struct sess *sp, unsigned flags, const char *str, ...)
p
=
va_arg
(
ap
,
const
char
*
);
}
va_end
(
ap
);
SMS_Finish
(
sp
->
wrk
->
obj
);
http_Unset
(
sp
->
wrk
->
obj
->
http
,
H_Content_Length
);
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
wrk
->
obj
->
http
,
"Content-Length: %zd"
,
sp
->
wrk
->
obj
->
len
);
SMS_Finish
(
sp
->
req
->
obj
);
http_Unset
(
sp
->
req
->
obj
->
http
,
H_Content_Length
);
http_PrintfHeader
(
sp
->
wrk
,
sp
->
vsl_id
,
sp
->
req
->
obj
->
http
,
"Content-Length: %zd"
,
sp
->
req
->
obj
->
len
);
}
/*--------------------------------------------------------------------*/
...
...
@@ -512,9 +512,9 @@ void
VRT_purge
(
const
struct
sess
*
sp
,
double
ttl
,
double
grace
)
{
if
(
sp
->
req
->
cur_method
==
VCL_MET_HIT
)
HSH_Purge
(
sp
,
sp
->
wrk
->
obj
->
objcore
->
objhead
,
ttl
,
grace
);
HSH_Purge
(
sp
,
sp
->
req
->
obj
->
objcore
->
objhead
,
ttl
,
grace
);
else
if
(
sp
->
req
->
cur_method
==
VCL_MET_MISS
)
HSH_Purge
(
sp
,
sp
->
wrk
->
objcore
->
objhead
,
ttl
,
grace
);
HSH_Purge
(
sp
,
sp
->
req
->
objcore
->
objhead
,
ttl
,
grace
);
}
/*--------------------------------------------------------------------
...
...
bin/varnishd/cache/cache_vrt_var.c
View file @
6c148642
...
...
@@ -88,8 +88,8 @@ 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
(
obj
,
proto
,
sp
->
wrk
->
obj
->
http
,
HTTP_HDR_PROTO
)
VRT_DO_HDR
(
obj
,
response
,
sp
->
wrk
->
obj
->
http
,
HTTP_HDR_RESPONSE
)
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
)
...
...
@@ -114,7 +114,7 @@ VRT_r_##obj##_status(const struct sess *sp) \
return(http->status); \
}
VRT_DO_STATUS
(
obj
,
sp
->
wrk
->
obj
->
http
)
VRT_DO_STATUS
(
obj
,
sp
->
req
->
obj
->
http
)
VRT_DO_STATUS
(
beresp
,
sp
->
wrk
->
busyobj
->
beresp
)
VRT_DO_STATUS
(
resp
,
sp
->
req
->
resp
)
...
...
@@ -145,9 +145,9 @@ VRT_l_beresp_saintmode(const struct sess *sp, double a)
if
(
!
vbc
->
backend
)
return
;
CHECK_OBJ_NOTNULL
(
vbc
->
backend
,
BACKEND_MAGIC
);
if
(
!
sp
->
wrk
->
objcore
)
if
(
!
sp
->
req
->
objcore
)
return
;
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
objcore
,
OBJCORE_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
req
->
objcore
,
OBJCORE_MAGIC
);
/* Setting a negative holdoff period is a mistake. Detecting this
* when compiling the VCL would be better.
...
...
@@ -156,7 +156,7 @@ VRT_l_beresp_saintmode(const struct sess *sp, double a)
ALLOC_OBJ
(
new
,
TROUBLE_MAGIC
);
AN
(
new
);
new
->
target
=
(
uintptr_t
)(
sp
->
wrk
->
objcore
->
objhead
);
new
->
target
=
(
uintptr_t
)(
sp
->
req
->
objcore
->
objhead
);
new
->
timeout
=
sp
->
t_req
+
a
;
/* Insert the new item on the list before the first item with a
...
...
@@ -405,15 +405,15 @@ VRT_DO_EXP(req, sp->req->exp, ttl, 0, )
VRT_DO_EXP
(
req
,
sp
->
req
->
exp
,
grace
,
0
,
)
VRT_DO_EXP
(
req
,
sp
->
req
->
exp
,
keep
,
0
,
)
VRT_DO_EXP
(
obj
,
sp
->
wrk
->
obj
->
exp
,
grace
,
0
,
EXP_Rearm
(
sp
->
wrk
->
obj
);
vrt_wsp_exp
(
sp
,
sp
->
wrk
->
obj
->
xid
,
&
sp
->
wrk
->
obj
->
exp
);)
VRT_DO_EXP
(
obj
,
sp
->
wrk
->
obj
->
exp
,
ttl
,
(
sp
->
t_req
-
sp
->
wrk
->
obj
->
exp
.
entered
),
EXP_Rearm
(
sp
->
wrk
->
obj
);
vrt_wsp_exp
(
sp
,
sp
->
wrk
->
obj
->
xid
,
&
sp
->
wrk
->
obj
->
exp
);)
VRT_DO_EXP
(
obj
,
sp
->
wrk
->
obj
->
exp
,
keep
,
0
,
EXP_Rearm
(
sp
->
wrk
->
obj
);
vrt_wsp_exp
(
sp
,
sp
->
wrk
->
obj
->
xid
,
&
sp
->
wrk
->
obj
->
exp
);)
VRT_DO_EXP
(
obj
,
sp
->
req
->
obj
->
exp
,
grace
,
0
,
EXP_Rearm
(
sp
->
req
->
obj
);
vrt_wsp_exp
(
sp
,
sp
->
req
->
obj
->
xid
,
&
sp
->
req
->
obj
->
exp
);)
VRT_DO_EXP
(
obj
,
sp
->
req
->
obj
->
exp
,
ttl
,
(
sp
->
t_req
-
sp
->
req
->
obj
->
exp
.
entered
),
EXP_Rearm
(
sp
->
req
->
obj
);
vrt_wsp_exp
(
sp
,
sp
->
req
->
obj
->
xid
,
&
sp
->
req
->
obj
->
exp
);)
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
);)
...
...
@@ -531,8 +531,8 @@ VRT_r_obj_hits(const struct sess *sp)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
obj
,
OBJECT_MAGIC
);
/* XXX */
return
(
sp
->
wrk
->
obj
->
hits
);
CHECK_OBJ_NOTNULL
(
sp
->
req
->
obj
,
OBJECT_MAGIC
);
/* XXX */
return
(
sp
->
req
->
obj
->
hits
);
}
double
...
...
@@ -540,8 +540,8 @@ VRT_r_obj_lastuse(const struct sess *sp)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
wrk
->
obj
,
OBJECT_MAGIC
);
/* XXX */
return
(
VTIM_real
()
-
sp
->
wrk
->
obj
->
last_use
);
CHECK_OBJ_NOTNULL
(
sp
->
req
->
obj
,
OBJECT_MAGIC
);
/* XXX */
return
(
VTIM_real
()
-
sp
->
req
->
obj
->
last_use
);
}
unsigned
...
...
bin/varnishd/storage/stevedore.c
View file @
6c148642
...
...
@@ -256,11 +256,11 @@ STV_MkObject(struct worker *wrk, void *ptr, unsigned ltot,
VTAILQ_INIT
(
&
o
->
store
);
wrk
->
stats
.
n_object
++
;
if
(
wrk
->
objcore
!=
NULL
)
{
CHECK_OBJ_NOTNULL
(
wrk
->
objcore
,
OBJCORE_MAGIC
);
if
(
wrk
->
sp
->
req
->
objcore
!=
NULL
)
{
CHECK_OBJ_NOTNULL
(
wrk
->
sp
->
req
->
objcore
,
OBJCORE_MAGIC
);
o
->
objcore
=
wrk
->
objcore
;
wrk
->
objcore
=
NULL
;
/* refcnt follows pointer. */
o
->
objcore
=
wrk
->
sp
->
req
->
objcore
;
wrk
->
sp
->
req
->
objcore
=
NULL
;
/* refcnt follows pointer. */
BAN_NewObjCore
(
o
->
objcore
);
o
->
objcore
->
methods
=
&
default_oc_methods
;
...
...
bin/varnishd/storage/storage_persistent.c
View file @
6c148642
...
...
@@ -474,10 +474,10 @@ smp_allocobj(struct stevedore *stv, struct worker *wrk, unsigned ltot,
struct
objcore
*
oc
;
unsigned
objidx
;
if
(
wrk
->
objcore
==
NULL
)
if
(
wrk
->
sp
->
req
->
objcore
==
NULL
)
return
(
NULL
);
/* from cnt_error */
CAST_OBJ_NOTNULL
(
sc
,
stv
->
priv
,
SMP_SC_MAGIC
);
AN
(
wrk
->
objcore
);
AN
(
wrk
->
sp
->
req
->
objcore
);
AN
(
wrk
->
busyobj
->
exp
.
ttl
>
0
.);
ltot
=
IRNUP
(
sc
,
ltot
);
...
...
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