[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