]> err.no Git - varnish/commitdiff
Store the socket address in the session
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 22 Jul 2006 10:35:39 +0000 (10:35 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 22 Jul 2006 10:35:39 +0000 (10:35 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@557 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache.h
varnish-cache/bin/varnishd/cache_session.c

index 9fccf30adab6ecf73016cd666589c94604392353..38dc3e2b80db1caa2e5f59de66370ff05c368326 100644 (file)
@@ -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];
index f2ade62b1e2fb3d685e8ba421ca531f3e41beee6..1fffbbe1534b4e0a5ad3a07f23c7ba0b71d0efc1 100644 (file)
@@ -15,6 +15,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/uio.h>
+#include <sys/socket.h>
 
 #include "libvarnish.h"
 #include "heritage.h"
 /*--------------------------------------------------------------------*/
 
 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);
 }