[master] dedff8e Untangle code slightly.
Poul-Henning Kamp
phk at FreeBSD.org
Tue Mar 24 13:02:48 CET 2015
commit dedff8e11fdabe1f175451e7fdf2f93f8a56f882
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue Mar 24 08:54:23 2015 +0000
Untangle code slightly.
diff --git a/bin/varnishd/http1/cache_http1_fsm.c b/bin/varnishd/http1/cache_http1_fsm.c
index 0cddb2e..60bec64 100644
--- a/bin/varnishd/http1/cache_http1_fsm.c
+++ b/bin/varnishd/http1/cache_http1_fsm.c
@@ -136,13 +136,7 @@ http1_wait(struct sess *sp, struct worker *wrk, struct req *req)
* the client connection
*/
-enum http1_cleanup_ret {
- SESS_DONE_RET_GONE,
- SESS_DONE_RET_WAIT,
- SESS_DONE_RET_START,
-};
-
-static enum http1_cleanup_ret
+static int
http1_cleanup(struct sess *sp, struct worker *wrk, struct req *req)
{
@@ -196,25 +190,12 @@ http1_cleanup(struct sess *sp, struct worker *wrk, struct req *req)
AZ(req->vcl);
SES_ReleaseReq(req);
SES_Delete(sp, SC_NULL, NAN);
- return (SESS_DONE_RET_GONE);
+ return (1);
}
WS_Reset(req->ws, NULL);
WS_Reset(wrk->aws, NULL);
-
- SES_RxReInit(req->htc);
- if (HTTP1_Complete(req->htc) == HTC_S_COMPLETE) {
- AZ(req->vsl->wid);
- req->t_first = req->t_req = sp->t_idle;
- wrk->stats->sess_pipeline++;
- req->acct.req_hdrbytes +=
- req->htc->rxbuf_e - req->htc->rxbuf_b;
- return (SESS_DONE_RET_START);
- } else {
- if (req->htc->rxbuf_e != req->htc->rxbuf_b)
- wrk->stats->sess_readahead++;
- return (SESS_DONE_RET_WAIT);
- }
+ return (0);
}
/*----------------------------------------------------------------------
@@ -329,7 +310,6 @@ HTTP1_Session(struct worker *wrk, struct req *req)
{
enum req_fsm_nxt nxt = REQ_FSM_MORE;
struct sess *sp;
- enum http1_cleanup_ret sdr;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
@@ -347,8 +327,7 @@ HTTP1_Session(struct worker *wrk, struct req *req)
SES_Close(sp, SC_REM_CLOSE);
else
SES_Close(sp, SC_TX_ERROR);
- sdr = http1_cleanup(sp, wrk, req);
- assert(sdr == SESS_DONE_RET_GONE);
+ AN(http1_cleanup(sp, wrk, req));
return;
}
@@ -360,8 +339,7 @@ HTTP1_Session(struct worker *wrk, struct req *req)
(void)HSH_DerefObjHead(wrk, &req->hash_objhead);
AZ(req->hash_objhead);
SES_Close(sp, SC_REM_CLOSE);
- sdr = http1_cleanup(sp, wrk, req);
- assert(sdr == SESS_DONE_RET_GONE);
+ AN(http1_cleanup(sp, wrk, req));
return;
}
@@ -379,19 +357,21 @@ HTTP1_Session(struct worker *wrk, struct req *req)
if (nxt == REQ_FSM_DISEMBARK)
return;
assert(nxt == REQ_FSM_DONE);
- sdr = http1_cleanup(sp, wrk, req);
- switch (sdr) {
- case SESS_DONE_RET_GONE:
+ if (http1_cleanup(sp, wrk, req))
return;
- case SESS_DONE_RET_WAIT:
- sp->sess_step = S_STP_H1NEWREQ;
- break;
- case SESS_DONE_RET_START:
+ SES_RxReInit(req->htc);
+ if (HTTP1_Complete(req->htc) == HTC_S_COMPLETE) {
+ AZ(req->vsl->wid);
+ req->t_first = req->t_req = sp->t_idle;
+ wrk->stats->sess_pipeline++;
+ req->acct.req_hdrbytes +=
+ req->htc->rxbuf_e - req->htc->rxbuf_b;
sp->sess_step = S_STP_H1WORKING;
req->req_step = R_STP_RECV;
- break;
- default:
- WRONG("Illegal enum http1_cleanup_ret");
+ } else {
+ if (req->htc->rxbuf_e != req->htc->rxbuf_b)
+ wrk->stats->sess_readahead++;
+ sp->sess_step = S_STP_H1NEWREQ;
}
}
More information about the varnish-commit
mailing list