[master] 58aafc2 Allocate client IP/port string from sess->ws

Poul-Henning Kamp phk at FreeBSD.org
Tue Dec 3 17:38:41 CET 2013


commit 58aafc2a7ee750bada7a64f43378d5c6b7916e86
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon Dec 2 12:08:50 2013 +0000

    Allocate client IP/port string from sess->ws

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index d6e0526..9a6dc78 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -772,8 +772,8 @@ struct sess {
 	struct suckaddr		*local_addr;
 
 	/* formatted ascii client address */
-	char			addr[ADDR_BUFSIZE];
-	char			port[PORT_BUFSIZE];
+	char			*client_addr_str;
+	char			*client_port_str;
 
 	struct acct		acct_ses;
 
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 3258033..6f26703 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -348,7 +348,8 @@ pan_sess(const struct sess *sp)
 	VSB_printf(pan_vsp, "  sp = %p {\n", sp);
 	VSB_printf(pan_vsp, "    fd = %d, vxid = %u,\n",
 	    sp->fd, sp->vxid & VSL_IDENTMASK);
-	VSB_printf(pan_vsp, "    client = %s %s,\n", sp->addr, sp->port);
+	VSB_printf(pan_vsp, "    client = %s %s,\n", sp->client_addr_str,
+		sp->client_port_str);
 	switch (sp->sess_step) {
 #define SESS_STEP(l, u) case S_STP_##u: stp = "S_STP_" #u; break;
 #include "tbl/steps.h"
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 5502a4b..af8531f 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -674,7 +674,8 @@ cnt_recv(struct worker *wrk, struct req *req)
 	AZ(req->obj);
 	AZ(req->objcore);
 
-	VSLb(req->vsl, SLT_ReqStart, "%s %s", req->sp->addr, req->sp->port);
+	VSLb(req->vsl, SLT_ReqStart, "%s %s",
+	    req->sp->client_addr_str, req->sp->client_port_str);
 
 	if (req->err_code) {
 		req->req_step = R_STP_ERROR;
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index fb488af..23a1feb 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -192,12 +192,14 @@ ses_vsl_socket(struct sess *sp, const char *lsockname)
 	AN(VSA_Build(sp->local_addr, &ss, sl));
 	assert(VSA_Sane(sp->local_addr));
 
-	VTCP_name(sp->remote_addr,
-	    sp->addr, sizeof sp->addr, sp->port, sizeof sp->port);
+	VTCP_name(sp->remote_addr, laddr, sizeof laddr, lport, sizeof lport);
+	sp->client_addr_str = WS_Copy(sp->ws, laddr, -1);
+	sp->client_port_str = WS_Copy(sp->ws, lport, -1);
 	VTCP_name(sp->local_addr, laddr, sizeof laddr, lport, sizeof lport);
 	VSL(SLT_Begin, sp->vxid, "sess");
 	VSL(SLT_SessOpen, sp->vxid, "%s %s %s %s %s %.6f %d",
-	    sp->addr, sp->port, lsockname, laddr, lport, sp->t_open, sp->fd);
+	    sp->client_addr_str, sp->client_port_str, lsockname, laddr, lport,
+	    sp->t_open, sp->fd);
 }
 
 /*--------------------------------------------------------------------
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index 5e67e76..a769a06 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -199,7 +199,7 @@ VRT_r_client_identity(const struct vrt_ctx *ctx)
 	if (ctx->req->client_identity != NULL)
 		return (ctx->req->client_identity);
 	else
-		return (ctx->req->sp->addr);
+		return (ctx->req->sp->client_addr_str);
 }
 
 void



More information about the varnish-commit mailing list