[master] ab5b0c8 Convert the remote address of the session to suckaddr too.
Poul-Henning Kamp
phk at varnish-cache.org
Mon Oct 28 08:38:00 CET 2013
commit ab5b0c8388eb0698bd7d90f1df0657cc8a5287e0
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Oct 28 07:37:44 2013 +0000
Convert the remote address of the session to suckaddr too.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 069a80a..17f7f1f 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -767,8 +767,7 @@ struct sess {
/* Session related fields ------------------------------------*/
- socklen_t sockaddrlen;
- struct sockaddr_storage sockaddr;
+ struct suckaddr *their_addr;
struct suckaddr *our_addr;
/* formatted ascii client address */
diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c
index bfaabca..17fe100 100644
--- a/bin/varnishd/cache/cache_acceptor.c
+++ b/bin/varnishd/cache/cache_acceptor.c
@@ -51,6 +51,7 @@
#include "vcli.h"
#include "vcli_priv.h"
+#include "vsa.h"
#include "vtcp.h"
#include "vtim.h"
@@ -350,9 +351,9 @@ VCA_SetupSess(struct worker *wrk, struct sess *sp)
sp->fd = wa->acceptsock;
wa->acceptsock = -1;
retval = wa->acceptlsock->name;
- assert(wa->acceptaddrlen <= sp->sockaddrlen);
- memcpy(&sp->sockaddr, &wa->acceptaddr, wa->acceptaddrlen);
- sp->sockaddrlen = wa->acceptaddrlen;
+ assert(wa->acceptaddrlen <= vsa_suckaddr_len);
+ sp->their_addr = VSA_Build(sp->their_addr,
+ &wa->acceptaddr, wa->acceptaddrlen);
vca_pace_good();
wrk->stats.sess_conn++;
WS_Release(wrk->aws, 0);
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index 92221f0..e27ed68 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -97,13 +97,19 @@ static struct sess *
ses_new(struct sesspool *pp)
{
struct sess *sp;
+ char *s;
CHECK_OBJ_NOTNULL(pp, SESSPOOL_MAGIC);
sp = MPL_Get(pp->mpl_sess, NULL);
sp->magic = SESS_MAGIC;
sp->sesspool = pp;
- sp->sockaddrlen = sizeof(sp->sockaddr);
- sp->sockaddr.ss_family = PF_UNSPEC;
+
+ s = (char *)sp;
+ s += sizeof *sp;
+ s += vsa_suckaddr_len;
+ memset(s, 0, vsa_suckaddr_len);
+ sp->their_addr = (void*)s;
+
sp->t_open = NAN;
sp->t_idle = NAN;
sp->our_addr = NULL;
@@ -197,7 +203,7 @@ ses_vsl_socket(struct sess *sp, const char *lsockname)
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
AN(lsockname);
- VTCP_name(&sp->sockaddr, sp->sockaddrlen,
+ VTCP_name((const void *)sp->their_addr, vsa_suckaddr_len,
sp->addr, sizeof sp->addr, sp->port, sizeof sp->port);
if (cache_param->log_local_addr) {
SES_Get_Our_Addr(sp);
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index d14de37..0ef4a05 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -540,7 +540,7 @@ VRT_r_client_ip(const struct vrt_ctx *ctx)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
- return (&ctx->req->sp->sockaddr);
+ return (ctx->req->sp->their_addr);
}
VCL_IP
More information about the varnish-commit
mailing list