Commit 876d42b9 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Make sure the req always has a transport

parent 1910640d
...@@ -175,7 +175,6 @@ Req_Cleanup(struct sess *sp, struct worker *wrk, struct req *req) ...@@ -175,7 +175,6 @@ Req_Cleanup(struct sess *sp, struct worker *wrk, struct req *req)
} }
req->req_bodybytes = 0; req->req_bodybytes = 0;
if (!isnan(req->t_prev) && req->t_prev > 0.) if (!isnan(req->t_prev) && req->t_prev > 0.)
sp->t_idle = req->t_prev; sp->t_idle = req->t_prev;
else else
......
...@@ -268,6 +268,7 @@ http1_dissect(struct worker *wrk, struct req *req) ...@@ -268,6 +268,7 @@ http1_dissect(struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC); CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(req->transport, TRANSPORT_MAGIC);
/* Allocate a new vxid now that we know we'll need it. */ /* Allocate a new vxid now that we know we'll need it. */
AZ(req->vsl->wid); AZ(req->vsl->wid);
...@@ -353,9 +354,12 @@ HTTP1_Session(struct worker *wrk, struct req *req) ...@@ -353,9 +354,12 @@ HTTP1_Session(struct worker *wrk, struct req *req)
return; return;
} }
req->transport = &HTTP1_transport;
while (1) { while (1) {
st = http1_getstate(sp); st = http1_getstate(sp);
if (st == H1NEWREQ) { if (st == H1NEWREQ) {
CHECK_OBJ_NOTNULL(req->transport, TRANSPORT_MAGIC);
assert(isnan(req->t_prev)); assert(isnan(req->t_prev));
assert(isnan(req->t_req)); assert(isnan(req->t_req));
AZ(req->vcl); AZ(req->vcl);
...@@ -441,6 +445,7 @@ HTTP1_Session(struct worker *wrk, struct req *req) ...@@ -441,6 +445,7 @@ HTTP1_Session(struct worker *wrk, struct req *req)
req->req_step = R_STP_RECV; req->req_step = R_STP_RECV;
http1_setstate(sp, H1PROC); http1_setstate(sp, H1PROC);
} else if (st == H1BUSY) { } else if (st == H1BUSY) {
CHECK_OBJ_NOTNULL(req->transport, TRANSPORT_MAGIC);
/* /*
* Return from waitinglist. * Return from waitinglist.
* Check to see if the remote has left. * Check to see if the remote has left.
...@@ -456,12 +461,10 @@ HTTP1_Session(struct worker *wrk, struct req *req) ...@@ -456,12 +461,10 @@ HTTP1_Session(struct worker *wrk, struct req *req)
} }
http1_setstate(sp, H1PROC); http1_setstate(sp, H1PROC);
} else if (st == H1PROC) { } else if (st == H1PROC) {
req->transport = &HTTP1_transport;
req->task.func = http1_req; req->task.func = http1_req;
req->task.priv = req; req->task.priv = req;
if (CNT_Request(wrk, req) == REQ_FSM_DISEMBARK) if (CNT_Request(wrk, req) == REQ_FSM_DISEMBARK)
return; return;
req->transport = NULL;
req->task.func = NULL; req->task.func = NULL;
req->task.priv = NULL; req->task.priv = NULL;
http1_setstate(sp, H1CLEANUP); http1_setstate(sp, H1CLEANUP);
......
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