[master] 6308c2e Register where we want to be resumed before disembarking a req.
Poul-Henning Kamp
phk at FreeBSD.org
Wed Feb 10 10:44:26 CET 2016
commit 6308c2e1dd4698a8b65f64381b7ff8549e349c57
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed Feb 10 08:58:44 2016 +0000
Register where we want to be resumed before disembarking a req.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 0582f5b..27c32d3 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -949,7 +949,6 @@ void SES_Wait(struct sess *sp);
void SES_Delete(struct sess *sp, enum sess_close reason, double now);
void SES_NewPool(struct pool *pp, unsigned pool_no);
int SES_Reschedule_Req(struct req *);
-task_func_t SES_Proto_Req;
enum htc_status_e {
HTC_S_JUNK = -5,
diff --git a/bin/varnishd/cache/cache_esi_deliver.c b/bin/varnishd/cache/cache_esi_deliver.c
index ba10948..e6eb949 100644
--- a/bin/varnishd/cache/cache_esi_deliver.c
+++ b/bin/varnishd/cache/cache_esi_deliver.c
@@ -65,7 +65,7 @@ struct ecx {
uint32_t crc;
};
-static struct transport VED_transport = {
+static const struct transport VED_transport = {
.magic = TRANSPORT_MAGIC,
.name = "ESI_INCLUDE",
.deliver = VED_Deliver,
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index a12f723..770ce73 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -320,8 +320,7 @@ SES_Reschedule_Req(struct req *req)
pp = sp->pool;
CHECK_OBJ_NOTNULL(pp, POOL_MAGIC);
- req->task.func = SES_Proto_Req;
- req->task.priv = req;
+ AN(req->task.func);
return (Pool_Task(pp, &req->task, TASK_QUEUE_REQ));
}
diff --git a/bin/varnishd/http1/cache_http1_fsm.c b/bin/varnishd/http1/cache_http1_fsm.c
index e201707..67274c1 100644
--- a/bin/varnishd/http1/cache_http1_fsm.c
+++ b/bin/varnishd/http1/cache_http1_fsm.c
@@ -48,8 +48,8 @@
* Call protocol for this request
*/
-void __match_proto__(task_func_t)
-SES_Proto_Req(struct worker *wrk, void *arg)
+static void __match_proto__(task_func_t)
+http1_req(struct worker *wrk, void *arg)
{
struct req *req;
@@ -57,6 +57,7 @@ SES_Proto_Req(struct worker *wrk, void *arg)
CAST_OBJ_NOTNULL(req, arg, REQ_MAGIC);
THR_SetRequest(req);
+ req->transport = req->sp->transport;
AZ(wrk->aws->r);
HTTP1_Session(wrk, req);
AZ(wrk->v1l);
@@ -86,7 +87,7 @@ http1_new_session(struct worker *wrk, void *arg)
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
sp->sess_step = S_STP_H1NEWREQ;
- wrk->task.func = SES_Proto_Req;
+ wrk->task.func = http1_req;
wrk->task.priv = req;
}
@@ -105,7 +106,7 @@ http1_unwait(struct worker *wrk, void *arg)
SES_RxInit(req->htc, req->ws,
cache_param->http_req_size, cache_param->http_req_hdr_len);
sp->sess_step = S_STP_H1NEWREQ;
- wrk->task.func = SES_Proto_Req;
+ wrk->task.func = http1_req;
wrk->task.priv = req;
}
@@ -323,6 +324,8 @@ HTTP1_Session(struct worker *wrk, struct req *req)
case S_STP_H1PROC:
req->transport = &HTTP1_transport;
if (CNT_Request(wrk, req) == REQ_FSM_DISEMBARK) {
+ req->task.func = http1_req;
+ req->task.priv = req;
sp->sess_step = S_STP_H1BUSY;
return;
}
More information about the varnish-commit
mailing list