[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