[master] 0bac500 Further compact the acceptor-session-creation code.

Poul-Henning Kamp phk at FreeBSD.org
Tue Mar 17 13:56:50 CET 2015


commit 0bac50033599ecbb5efe1a6017732b33807cfd7e
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Mar 17 12:55:59 2015 +0000

    Further compact the acceptor-session-creation code.

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 314e88c..2e41149 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -1000,7 +1000,6 @@ void SES_DeletePool(struct sesspool *sp);
 int SES_ScheduleReq(struct req *);
 struct req *SES_GetReq(const struct worker *, struct sess *);
 void SES_ReleaseReq(struct req *);
-void SES_vsl_socket(struct sess *sp, const char *lsockname);
 void SES_sess_pool_task(struct worker *wrk, void *arg);
 
 /* cache_shmlog.c */
diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c
index 0b7d4aa..8bfda98 100644
--- a/bin/varnishd/cache/cache_acceptor.c
+++ b/bin/varnishd/cache/cache_acceptor.c
@@ -293,6 +293,11 @@ vca_make_session(struct worker *wrk, void *arg)
 	struct sess *sp;
 	const char *lsockname;
 	struct wrk_accept *wa;
+	struct sockaddr_storage ss;
+	socklen_t sl;
+	char laddr[VTCP_ADDRBUFSIZE];
+	char lport[VTCP_PORTBUFSIZE];
+
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CAST_OBJ_NOTNULL(wa, arg, WRK_ACCEPT_MAGIC);
@@ -323,6 +328,7 @@ vca_make_session(struct worker *wrk, void *arg)
 	sp->fd = wa->acceptsock;
 	wa->acceptsock = -1;
 	lsockname = wa->acceptlsock->name;
+	AN(lsockname);
 	assert(wa->acceptaddrlen <= vsa_suckaddr_len);
 	AN(VSA_Build(sess_remote_addr(sp), &wa->acceptaddr, wa->acceptaddrlen));
 	vca_pace_good();
@@ -335,7 +341,24 @@ vca_make_session(struct worker *wrk, void *arg)
 	}
 	vca_tcp_opt_set(sp->fd, 0);
 
-	SES_vsl_socket(sp, lsockname);
+	AN(sp->addrs);
+	sl = sizeof ss;
+	AZ(getsockname(sp->fd, (void*)&ss, &sl));
+	AN(VSA_Build(sess_local_addr(sp), &ss, sl));
+	assert(VSA_Sane(sess_local_addr(sp)));
+
+	VTCP_name(sess_remote_addr(sp), laddr, sizeof laddr,
+	    lport, sizeof lport);
+	sp->client_addr_str = WS_Copy(sp->ws, laddr, -1);
+	AN(sp->client_addr_str);
+	sp->client_port_str = WS_Copy(sp->ws, lport, -1);
+	AN(sp->client_port_str);
+	VTCP_name(sess_local_addr(sp), laddr, sizeof laddr,
+	    lport, sizeof lport);
+	VSL(SLT_Begin, sp->vxid, "sess 0 HTTP/1");
+	VSL(SLT_SessOpen, sp->vxid, "%s %s %s %s %s %.6f %d",
+	    sp->client_addr_str, sp->client_port_str, lsockname, laddr, lport,
+	    sp->t_open, sp->fd);
 
 	wrk->task.func = SES_sess_pool_task;
 	wrk->task.priv = sp;
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index 6fd9a55..4a2e02f 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -47,7 +47,6 @@
 
 #include "waiter/waiter.h"
 #include "vsa.h"
-#include "vtcp.h"
 #include "vtim.h"
 
 /*--------------------------------------------------------------------*/
@@ -144,47 +143,6 @@ SES_sess_pool_task(struct worker *wrk, void *arg)
 }
 
 /*--------------------------------------------------------------------
- * VSL log the endpoints of the TCP connection.
- *
- * We use VSL() to get the sessions vxid and to make sure tha this
- * VSL comes before anything else for this session.
- *
- * This is a separate procedure only to isolate the two stack buffers.
- *
- */
-
-void
-SES_vsl_socket(struct sess *sp, const char *lsockname)
-{
-	struct sockaddr_storage ss;
-	socklen_t sl;
-	char laddr[VTCP_ADDRBUFSIZE];
-	char lport[VTCP_PORTBUFSIZE];
-
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	AN(lsockname);
-
-	AN(sp->addrs);
-	sl = sizeof ss;
-	AZ(getsockname(sp->fd, (void*)&ss, &sl));
-	AN(VSA_Build(sess_local_addr(sp), &ss, sl));
-	assert(VSA_Sane(sess_local_addr(sp)));
-
-	VTCP_name(sess_remote_addr(sp), laddr, sizeof laddr,
-	    lport, sizeof lport);
-	sp->client_addr_str = WS_Copy(sp->ws, laddr, -1);
-	AN(sp->client_addr_str);
-	sp->client_port_str = WS_Copy(sp->ws, lport, -1);
-	AN(sp->client_port_str);
-	VTCP_name(sess_local_addr(sp), laddr, sizeof laddr,
-	    lport, sizeof lport);
-	VSL(SLT_Begin, sp->vxid, "sess 0 HTTP/1");
-	VSL(SLT_SessOpen, sp->vxid, "%s %s %s %s %s %.6f %d",
-	    sp->client_addr_str, sp->client_port_str, lsockname, laddr, lport,
-	    sp->t_open, sp->fd);
-}
-
-/*--------------------------------------------------------------------
  * Schedule a request back on a work-thread from its sessions pool
  *
  * This is used to reschedule requests waiting on busy objects



More information about the varnish-commit mailing list