Commit a2d05b32 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Now it is starting to look like a finite state engine...

parent 89ab8737
...@@ -349,7 +349,6 @@ HTTP1_Session(struct worker *wrk, struct req *req) ...@@ -349,7 +349,6 @@ HTTP1_Session(struct worker *wrk, struct req *req)
if (nxt != REQ_FSM_MORE) if (nxt != REQ_FSM_MORE)
return; return;
sp->sess_step = S_STP_H1WORKING; sp->sess_step = S_STP_H1WORKING;
req->req_step = R_STP_RECV;
break; break;
case S_STP_H1BUSY: case S_STP_H1BUSY:
/* /*
...@@ -364,28 +363,25 @@ HTTP1_Session(struct worker *wrk, struct req *req) ...@@ -364,28 +363,25 @@ HTTP1_Session(struct worker *wrk, struct req *req)
AN(http1_cleanup(sp, wrk, req)); AN(http1_cleanup(sp, wrk, req));
return; return;
} }
sp->sess_step = S_STP_H1WORKING; sp->sess_step = S_STP_H1PROC;
break; break;
case S_STP_H1WORKING: case S_STP_H1WORKING:
assert( if (http1_dissect(wrk, req)) {
req->req_step == R_STP_LOOKUP || SES_Close(req->sp, req->doclose);
req->req_step == R_STP_RECV); sp->sess_step = S_STP_H1CLEANUP;
break;
if (req->req_step == R_STP_RECV) {
if (http1_dissect(wrk, req)) {
SES_Close(req->sp, req->doclose);
nxt = REQ_FSM_DONE;
} else {
nxt = REQ_FSM_MORE;
}
} }
if (nxt == REQ_FSM_MORE) req->req_step = R_STP_RECV;
nxt = CNT_Request(wrk, req); sp->sess_step = S_STP_H1PROC;
if (nxt == REQ_FSM_DISEMBARK) { break;
case S_STP_H1PROC:
if (CNT_Request(wrk, req) == REQ_FSM_DISEMBARK) {
sp->sess_step = S_STP_H1BUSY; sp->sess_step = S_STP_H1BUSY;
return; return;
} }
assert(nxt == REQ_FSM_DONE); sp->sess_step = S_STP_H1CLEANUP;
break;
case S_STP_H1CLEANUP:
if (http1_cleanup(sp, wrk, req)) if (http1_cleanup(sp, wrk, req))
return; return;
SES_RxReInit(req->htc); SES_RxReInit(req->htc);
...@@ -396,7 +392,6 @@ HTTP1_Session(struct worker *wrk, struct req *req) ...@@ -396,7 +392,6 @@ HTTP1_Session(struct worker *wrk, struct req *req)
req->acct.req_hdrbytes += req->acct.req_hdrbytes +=
req->htc->rxbuf_e - req->htc->rxbuf_b; req->htc->rxbuf_e - req->htc->rxbuf_b;
sp->sess_step = S_STP_H1WORKING; sp->sess_step = S_STP_H1WORKING;
req->req_step = R_STP_RECV;
} else { } else {
if (req->htc->rxbuf_e != req->htc->rxbuf_b) if (req->htc->rxbuf_e != req->htc->rxbuf_b)
wrk->stats->sess_readahead++; wrk->stats->sess_readahead++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment