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
4cff3b99
Commit
4cff3b99
authored
Sep 05, 2013
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename cache_response.c to cache_http1_deliver.c and make it responsible
for all deliveries, streaming or non-streaming
parent
b115ccfd
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
18 additions
and
82 deletions
+18
-82
Makefile.am
bin/varnishd/Makefile.am
+1
-1
cache.h
bin/varnishd/cache/cache.h
+3
-4
cache_http1_deliver.c
bin/varnishd/cache/cache_http1_deliver.c
+12
-2
cache_req_fsm.c
bin/varnishd/cache/cache_req_fsm.c
+2
-74
steps.h
include/tbl/steps.h
+0
-1
No files found.
bin/varnishd/Makefile.am
View file @
4cff3b99
...
...
@@ -39,7 +39,7 @@ varnishd_SOURCES = \
cache/cache_pipe.c
\
cache/cache_pool.c
\
cache/cache_req_fsm.c
\
cache/cache_
response
.c
\
cache/cache_
http1_deliver
.c
\
cache/cache_rfc2616.c
\
cache/cache_session.c
\
cache/cache_shmlog.c
\
...
...
bin/varnishd/cache/cache.h
View file @
4cff3b99
...
...
@@ -815,6 +815,9 @@ int HTTP1_DiscardReqBody(struct req *req);
int
HTTP1_CacheReqBody
(
struct
req
*
req
,
ssize_t
maxsize
);
int
HTTP1_IterateReqBody
(
struct
req
*
req
,
req_body_iter_f
*
func
,
void
*
priv
);
/* cache_http1_deliver.c */
void
V1D_Deliver
(
struct
req
*
);
/* cache_req_fsm.c [CNT] */
enum
req_fsm_nxt
CNT_Request
(
struct
worker
*
,
struct
req
*
);
...
...
@@ -1052,10 +1055,6 @@ void VSL_Flush(struct vsl_log *, int overflow);
#endif
/* cache_response.c */
void
RES_BuildHttp
(
struct
req
*
);
void
RES_WriteObj
(
struct
req
*
);
/* cache_vary.c */
int
VRY_Create
(
struct
busyobj
*
bo
,
struct
vsb
**
psb
);
int
VRY_Match
(
struct
req
*
,
const
uint8_t
*
vary
);
...
...
bin/varnishd/cache/cache_
response
.c
→
bin/varnishd/cache/cache_
http1_deliver
.c
View file @
4cff3b99
...
...
@@ -101,7 +101,7 @@ res_dorange(const struct req *req, const char *r, ssize_t *plow, ssize_t *phigh)
/*--------------------------------------------------------------------*/
void
static
void
RES_BuildHttp
(
struct
req
*
req
)
{
...
...
@@ -262,7 +262,7 @@ res_WriteDirObj(struct req *req, ssize_t low, ssize_t high)
* Attempt optimizations like 304 and 206 here.
*/
void
static
void
RES_WriteObj
(
struct
req
*
req
)
{
char
*
r
;
...
...
@@ -323,3 +323,13 @@ RES_WriteObj(struct req *req)
if
(
WRW_FlushRelease
(
req
->
wrk
)
&&
req
->
sp
->
fd
>=
0
)
SES_Close
(
req
->
sp
,
SC_REM_CLOSE
);
}
void
V1D_Deliver
(
struct
req
*
req
)
{
while
(
req
->
obj
->
objcore
->
busyobj
)
(
void
)
usleep
(
10000
);
RES_BuildHttp
(
req
);
RES_WriteObj
(
req
);
}
bin/varnishd/cache/cache_req_fsm.c
View file @
4cff3b99
...
...
@@ -75,72 +75,6 @@ DOT acceptor -> recv [style=bold,color=green]
#include "compat/srandomdev.h"
#endif
/*--------------------------------------------------------------------
* We have a refcounted object on the session, and possibly the busyobj
* which is fetching it, prepare a response.
*
DOT stream [
DOT shape=record
DOT label="{cnt_stream:}"
DOT ]
DOT stream:deliver:s -> DONE [style=bold,color=red]
DOT stream:deliver:s -> DONE [style=bold,color=blue]
*
*/
static
enum
req_fsm_nxt
cnt_stream
(
struct
worker
*
wrk
,
struct
req
*
req
)
{
struct
busyobj
*
bo
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
CHECK_OBJ_NOTNULL
(
req
,
REQ_MAGIC
);
bo
=
req
->
obj
->
objcore
->
busyobj
;
CHECK_OBJ_NOTNULL
(
bo
,
BUSYOBJ_MAGIC
);
AN
(
bo
->
do_stream
);
CHECK_OBJ_NOTNULL
(
req
->
obj
,
OBJECT_MAGIC
);
CHECK_OBJ_NOTNULL
(
req
->
vcl
,
VCL_CONF_MAGIC
);
AZ
(
bo
->
do_esi
);
if
(
wrk
->
handling
==
VCL_RET_RESTART
)
{
assert
(
req
->
obj
==
bo
->
fetch_obj
);
req
->
obj
=
NULL
;
VBO_DerefBusyObj
(
wrk
,
&
bo
);
AZ
(
req
->
obj
);
http_Teardown
(
req
->
resp
);
req
->
req_step
=
R_STP_RESTART
;
return
(
REQ_FSM_MORE
);
}
assert
(
wrk
->
handling
==
VCL_RET_DELIVER
);
VBO_waitstate
(
bo
,
BOS_FINISHED
);
assert
(
bo
->
state
>=
BOS_FINISHED
);
if
(
bo
->
state
==
BOS_FAILED
)
{
(
void
)
HSH_DerefObj
(
&
wrk
->
stats
,
&
req
->
obj
);
VBO_DerefBusyObj
(
wrk
,
&
bo
);
req
->
err_code
=
503
;
req
->
req_step
=
R_STP_ERROR
;
return
(
REQ_FSM_MORE
);
}
VBO_DerefBusyObj
(
wrk
,
&
bo
);
AZ
(
bo
);
RES_WriteObj
(
req
);
/* No point in saving the body if it is hit-for-pass */
if
(
req
->
obj
->
objcore
->
flags
&
OC_F_PASS
)
STV_Freestore
(
req
->
obj
);
assert
(
WRW_IsReleased
(
wrk
));
(
void
)
HSH_DerefObj
(
&
wrk
->
stats
,
&
req
->
obj
);
http_Teardown
(
req
->
resp
);
return
(
REQ_FSM_DONE
);
}
/*--------------------------------------------------------------------
* Deliver an already stored object
*
...
...
@@ -202,13 +136,6 @@ cnt_deliver(struct worker *wrk, struct req *req)
VCL_deliver_method
(
req
->
vcl
,
wrk
,
req
,
NULL
,
req
->
http
->
ws
);
while
(
req
->
obj
->
objcore
->
busyobj
)
{
VSLb
(
req
->
vsl
,
SLT_Debug
,
"HERE %s %d"
,
__func__
,
__LINE__
);
(
void
)
usleep
(
10000
);
}
RES_BuildHttp
(
req
);
/* Stop the insanity before it turns "Hotel California" on us */
if
(
req
->
restarts
>=
cache_param
->
max_restarts
)
wrk
->
handling
=
VCL_RET_DELIVER
;
...
...
@@ -220,9 +147,10 @@ cnt_deliver(struct worker *wrk, struct req *req)
req
->
req_step
=
R_STP_RESTART
;
return
(
REQ_FSM_MORE
);
}
assert
(
wrk
->
handling
==
VCL_RET_DELIVER
);
RES_WriteObj
(
req
);
V1D_Deliver
(
req
);
/* No point in saving the body if it is hit-for-pass */
if
(
req
->
obj
->
objcore
->
flags
&
OC_F_PASS
)
...
...
include/tbl/steps.h
View file @
4cff3b99
...
...
@@ -44,7 +44,6 @@ REQ_STEP(lookup, LOOKUP, (wrk, req))
REQ_STEP
(
purge
,
PURGE
,
(
wrk
,
req
))
REQ_STEP
(
miss
,
MISS
,
(
wrk
,
req
))
REQ_STEP
(
fetch
,
FETCH
,
(
wrk
,
req
))
REQ_STEP
(
stream
,
STREAM
,
(
wrk
,
req
))
REQ_STEP
(
deliver
,
DELIVER
,
(
wrk
,
req
))
REQ_STEP
(
error
,
ERROR
,
(
wrk
,
req
))
#endif
...
...
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