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
46cc55c5
Commit
46cc55c5
authored
Oct 10, 2018
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add an advisory hint to object iterators signalling that this is
the last segment.
parent
7fd371e0
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
22 additions
and
9 deletions
+22
-9
cache.h
bin/varnishd/cache/cache.h
+4
-1
cache_deliver_proc.c
bin/varnishd/cache/cache_deliver_proc.c
+2
-1
cache_esi_deliver.c
bin/varnishd/cache/cache_esi_deliver.c
+1
-1
cache_fetch.c
bin/varnishd/cache/cache_fetch.c
+2
-2
cache_req_body.c
bin/varnishd/cache/cache_req_body.c
+1
-1
cache_http1_fetch.c
bin/varnishd/http1/cache_http1_fetch.c
+1
-1
storage_simple.c
bin/varnishd/storage/storage_simple.c
+11
-2
No files found.
bin/varnishd/cache/cache.h
View file @
46cc55c5
...
...
@@ -686,7 +686,10 @@ int ObjHasAttr(struct worker *, struct objcore *, enum obj_attr);
const
void
*
ObjGetAttr
(
struct
worker
*
,
struct
objcore
*
,
enum
obj_attr
,
ssize_t
*
len
);
typedef
int
objiterate_f
(
void
*
priv
,
int
flush
,
const
void
*
ptr
,
ssize_t
len
);
typedef
int
objiterate_f
(
void
*
priv
,
unsigned
flush
,
const
void
*
ptr
,
ssize_t
len
);
#define OBJ_ITER_FLUSH 0x01
#define OBJ_ITER_FINAL 0x02
int
ObjIterate
(
struct
worker
*
,
struct
objcore
*
,
void
*
priv
,
objiterate_f
*
func
,
int
final
);
...
...
bin/varnishd/cache/cache_deliver_proc.c
View file @
46cc55c5
...
...
@@ -138,8 +138,9 @@ VDP_close(struct req *req)
/*--------------------------------------------------------------------*/
static
int
v_matchproto_
(
objiterate_f
)
vdp_objiterator
(
void
*
priv
,
int
flush
,
const
void
*
ptr
,
ssize_t
len
)
vdp_objiterator
(
void
*
priv
,
unsigned
flush
,
const
void
*
ptr
,
ssize_t
len
)
{
return
(
VDP_bytes
(
priv
,
flush
?
VDP_FLUSH
:
VDP_NULL
,
ptr
,
len
));
}
...
...
bin/varnishd/cache/cache_esi_deliver.c
View file @
46cc55c5
...
...
@@ -575,7 +575,7 @@ struct ved_foo {
};
static
int
v_matchproto_
(
objiterate_f
)
ved_objiterate
(
void
*
priv
,
int
flush
,
const
void
*
ptr
,
ssize_t
len
)
ved_objiterate
(
void
*
priv
,
unsigned
flush
,
const
void
*
ptr
,
ssize_t
len
)
{
struct
ved_foo
*
foo
;
const
uint8_t
*
pp
;
...
...
bin/varnishd/cache/cache_fetch.c
View file @
46cc55c5
...
...
@@ -702,15 +702,15 @@ vbf_stp_fetchend(struct worker *wrk, struct busyobj *bo)
*/
static
int
v_matchproto_
(
objiterate_f
)
vbf_objiterator
(
void
*
priv
,
int
flush
,
const
void
*
ptr
,
ssize_t
len
)
vbf_objiterator
(
void
*
priv
,
unsigned
flush
,
const
void
*
ptr
,
ssize_t
len
)
{
struct
busyobj
*
bo
;
ssize_t
l
;
const
uint8_t
*
ps
=
ptr
;
uint8_t
*
pd
;
(
void
)
flush
;
CAST_OBJ_NOTNULL
(
bo
,
priv
,
BUSYOBJ_MAGIC
);
(
void
)
flush
;
while
(
len
>
0
)
{
l
=
len
;
...
...
bin/varnishd/cache/cache_req_body.c
View file @
46cc55c5
...
...
@@ -226,7 +226,7 @@ VRB_Iterate(struct req *req, objiterate_f *func, void *priv)
*/
static
int
v_matchproto_
(
objiterate_f
)
httpq_req_body_discard
(
void
*
priv
,
int
flush
,
const
void
*
ptr
,
ssize_t
len
)
httpq_req_body_discard
(
void
*
priv
,
unsigned
flush
,
const
void
*
ptr
,
ssize_t
len
)
{
(
void
)
priv
;
...
...
bin/varnishd/http1/cache_http1_fetch.c
View file @
46cc55c5
...
...
@@ -46,7 +46,7 @@
*/
static
int
v_matchproto_
(
objiterate_f
)
vbf_iter_req_body
(
void
*
priv
,
int
flush
,
const
void
*
ptr
,
ssize_t
l
)
vbf_iter_req_body
(
void
*
priv
,
unsigned
flush
,
const
void
*
ptr
,
ssize_t
l
)
{
struct
busyobj
*
bo
;
...
...
bin/varnishd/storage/storage_simple.c
View file @
46cc55c5
...
...
@@ -246,6 +246,7 @@ sml_iterator(struct worker *wrk, struct objcore *oc,
ssize_t
sl
;
void
*
p
;
ssize_t
l
;
unsigned
u
;
obj
=
sml_getobj
(
wrk
,
oc
);
CHECK_OBJ_NOTNULL
(
obj
,
OBJECT_MAGIC
);
...
...
@@ -256,8 +257,13 @@ sml_iterator(struct worker *wrk, struct objcore *oc,
if
(
boc
==
NULL
)
{
VTAILQ_FOREACH_SAFE
(
st
,
&
obj
->
list
,
list
,
checkpoint
)
{
u
=
0
;
if
(
VTAILQ_NEXT
(
st
,
list
)
==
NULL
)
u
|=
OBJ_ITER_FINAL
;
if
(
final
)
u
|=
OBJ_ITER_FLUSH
;
if
(
ret
==
0
&&
st
->
len
>
0
)
ret
=
func
(
priv
,
1
,
st
->
ptr
,
st
->
len
);
ret
=
func
(
priv
,
u
,
st
->
ptr
,
st
->
len
);
if
(
final
)
{
VTAILQ_REMOVE
(
&
obj
->
list
,
st
,
list
);
sml_stv_free
(
stv
,
st
);
...
...
@@ -322,7 +328,10 @@ sml_iterator(struct worker *wrk, struct objcore *oc,
st
=
NULL
;
Lck_Unlock
(
&
boc
->
mtx
);
assert
(
l
>
0
||
boc
->
state
==
BOS_FINISHED
);
ret
=
func
(
priv
,
st
!=
NULL
?
final
:
1
,
p
,
l
);
u
=
0
;
if
(
st
==
NULL
||
final
)
u
|=
OBJ_ITER_FLUSH
;
ret
=
func
(
priv
,
u
,
p
,
l
);
if
(
ret
)
break
;
}
...
...
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