From: phk Date: Sat, 22 Jul 2006 10:35:39 +0000 (+0000) Subject: Store the socket address in the session X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0a958b9081bdf74af52a3ea3d870952af886c28;p=varnish Store the socket address in the session git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@557 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index 9fccf30a..38dc3e2b 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -207,6 +207,9 @@ struct sess { struct worker *wrk; + unsigned sockaddrlen; + struct sockaddr *sockaddr; + /* formatted ascii client address */ char addr[TCP_ADDRBUFSIZE]; char port[TCP_PORTBUFSIZE]; diff --git a/varnish-cache/bin/varnishd/cache_session.c b/varnish-cache/bin/varnishd/cache_session.c index f2ade62b..1fffbbe1 100644 --- a/varnish-cache/bin/varnishd/cache_session.c +++ b/varnish-cache/bin/varnishd/cache_session.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "libvarnish.h" #include "heritage.h" @@ -27,11 +28,12 @@ /*--------------------------------------------------------------------*/ struct sessmem { - unsigned magic; -#define SESSMEM_MAGIC 0x555859c5 + unsigned magic; +#define SESSMEM_MAGIC 0x555859c5 - struct sess sess; - struct http http; + struct sess sess; + struct http http; + struct sockaddr sockaddr[2]; /* INET6 hack */ }; /*--------------------------------------------------------------------*/ @@ -166,8 +168,6 @@ SES_New(struct sockaddr *addr, unsigned len) { struct sessmem *sm; - (void)addr; /* XXX */ - (void)len; /* XXX */ sm = calloc( sizeof *sm + heritage.mem_workspace, 1); @@ -178,6 +178,11 @@ SES_New(struct sockaddr *addr, unsigned len) sm->sess.magic = SESS_MAGIC; sm->sess.mem = sm; sm->sess.http = &sm->http; + + sm->sess.sockaddr = sm->sockaddr; + assert(len < sizeof(sm->sockaddr)); + memcpy(sm->sess.sockaddr, addr, len); + sm->sess.sockaddrlen = len; http_Setup(&sm->http, (void *)(sm + 1), heritage.mem_workspace); return (&sm->sess); }