[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