[master] 604d0fb Use one session attribute to hold the number of the transport protocol.

Poul-Henning Kamp phk at FreeBSD.org
Fri Feb 12 11:33:13 CET 2016


commit 604d0fbac5ae9c672fe2fa9e6ea26608738ef14f
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Fri Feb 12 10:26:29 2016 +0000

    Use one session attribute to hold the number of the transport protocol.

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index cffc68d..c1e29fa 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -619,6 +619,7 @@ struct req {
 
 enum sess_attr {
 #define SESS_ATTR(UP, low, typ, len)	SA_##UP,
+	SA_TRANSPORT,
 #include "tbl/sess_attr.h"
 #undef SESS_ATTR
 	SA_LAST
@@ -948,6 +949,8 @@ void SES_Wait(struct sess *, const struct transport *);
 void SES_Delete(struct sess *, enum sess_close reason, double now);
 void SES_NewPool(struct pool *, unsigned pool_no);
 int SES_Reschedule_Req(struct req *);
+void SES_SetTransport(struct worker *, struct sess *, struct req *,
+    const struct transport *);
 
 enum htc_status_e {
 	HTC_S_JUNK =		-5,
diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c
index 5acbb48..ee51e53 100644
--- a/bin/varnishd/cache/cache_acceptor.c
+++ b/bin/varnishd/cache/cache_acceptor.c
@@ -379,8 +379,7 @@ vca_make_session(struct worker *wrk, void *arg)
 	SES_RxInit(req->htc, req->ws,
 	    cache_param->http_req_size, cache_param->http_req_hdr_len);
 
-	wrk->task.func = wa->acceptlsock->transport->new_session;
-	wrk->task.priv = req;
+	SES_SetTransport(wrk, sp, req, wa->acceptlsock->transport);
 }
 
 /*--------------------------------------------------------------------
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index 7999e06..4208fc5 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -50,6 +50,24 @@
 
 /*--------------------------------------------------------------------*/
 
+void
+SES_SetTransport(struct worker *wrk, struct sess *sp, struct req *req,
+    const struct transport *xp)
+{
+
+	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
+	CHECK_OBJ_NOTNULL(xp, TRANSPORT_MAGIC);
+	assert(xp->number > 0);
+
+	sp->sattr[SA_TRANSPORT] = xp->number;
+	wrk->task.func = xp->new_session;
+	wrk->task.priv = req;
+}
+
+/*--------------------------------------------------------------------*/
+
 static int
 ses_get_attr(const struct sess *sp, enum sess_attr a, void **dst)
 {
diff --git a/bin/varnishd/proxy/cache_proxy_proto.c b/bin/varnishd/proxy/cache_proxy_proto.c
index cd5bfcf..ea0d676 100644
--- a/bin/varnishd/proxy/cache_proxy_proto.c
+++ b/bin/varnishd/proxy/cache_proxy_proto.c
@@ -377,8 +377,7 @@ vpx_new_session(struct worker *wrk, void *arg)
 	else
 		req->htc->pipeline_e = req->htc->rxbuf_e;
 	SES_RxReInit(req->htc);
-	wrk->task.func = HTTP1_transport.new_session;
-	wrk->task.priv = req;
+	SES_SetTransport(wrk, sp, req, &HTTP1_transport);
 }
 
 struct transport PROXY_transport = {
diff --git a/include/tbl/sess_attr.h b/include/tbl/sess_attr.h
index 7355b28..4ab9631 100644
--- a/include/tbl/sess_attr.h
+++ b/include/tbl/sess_attr.h
@@ -32,14 +32,13 @@
 
 /*lint -save -e525 -e539 */
 
-//        upper           lower         type			len
-SESS_ATTR(REMOTE_ADDR,	  remote_addr,	struct suckaddr,	vsa_suckaddr_len)
-SESS_ATTR(LOCAL_ADDR,	  local_addr,	struct suckaddr,	vsa_suckaddr_len)
-SESS_ATTR(CLIENT_ADDR,	  client_addr,	struct suckaddr,	vsa_suckaddr_len)
-SESS_ATTR(SERVER_ADDR,	  server_addr,	struct suckaddr,	vsa_suckaddr_len)
-SESS_ATTR(CLIENT_IP,	  client_ip,	char,			-1)
-SESS_ATTR(CLIENT_PORT,	  client_port,	char,			-1)
-SESS_ATTR(XPORT_PRIV1,	  xport_priv1,	void *,			sizeof(void*))
-SESS_ATTR(XPORT_PRIV2,	  xport_priv2,	uintptr_t,		sizeof(uintptr_t))
+//        upper           lower         type		    len
+SESS_ATTR(REMOTE_ADDR,	  remote_addr,	struct suckaddr,    vsa_suckaddr_len)
+SESS_ATTR(LOCAL_ADDR,	  local_addr,	struct suckaddr,    vsa_suckaddr_len)
+SESS_ATTR(CLIENT_ADDR,	  client_addr,	struct suckaddr,    vsa_suckaddr_len)
+SESS_ATTR(SERVER_ADDR,	  server_addr,	struct suckaddr,    vsa_suckaddr_len)
+SESS_ATTR(CLIENT_IP,	  client_ip,	char,		    -1)
+SESS_ATTR(CLIENT_PORT,	  client_port,	char,		    -1)
+SESS_ATTR(XPORT_PRIV,	  xport_priv,	uintptr_t,	    sizeof(uintptr_t))
 
 /*lint -restore */



More information about the varnish-commit mailing list