]> err.no Git - varnish/commitdiff
Handle IPv6 address -> string conversion too
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 3 Jul 2006 18:35:39 +0000 (18:35 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 3 Jul 2006 18:35:39 +0000 (18:35 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@287 d4fa192b-c00b-0410-8231-f00ffab90ce4

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

index 93969aca3a6bd82b88d2667f92815651999b5179..b8b1669cee6c1516492f2d9fff8cef8d382c4a78 100644 (file)
@@ -6,7 +6,7 @@
 
 #include "vcl_returns.h"
 
-#define VCA_ADDRBUFSIZE                32      /* Sizeof ascii network address */
+#define VCA_ADDRBUFSIZE                64      /* Sizeof ascii network address */
 
 struct event_base;
 struct cli;
index 92d9ccfc7897abca626c5823fca6d0e0cfa29559..004ee5fcfe67041b68a76618cbeb9e6e9371611d 100644 (file)
@@ -122,9 +122,9 @@ accept_f(int fd, short event, void *arg)
 {
        socklen_t l;
        struct sessmem *sm;
-       struct sockaddr addr;
+       struct sockaddr addr[2];
        struct sess *sp;
-       char port[10];
+       char port[NI_MAXSERV];
        int i;
 
        VSL_stats->client_conn++;
@@ -141,17 +141,21 @@ accept_f(int fd, short event, void *arg)
        sp->mem = sm;
 
        l = sizeof addr;
-       sp->fd = accept(fd, &addr, &l);
+       sp->fd = accept(fd, addr, &l);
        if (sp->fd < 0) {
                free(sp);
                return;
        }
        i = 1;
        AZ(setsockopt(sp->fd, SOL_SOCKET, SO_NOSIGPIPE, &i, sizeof i));
-       AZ(getnameinfo(&addr, l,
+       i = getnameinfo(addr, l,
            sp->addr, VCA_ADDRBUFSIZE,
-           port, sizeof port, NI_NUMERICHOST | NI_NUMERICSERV));
-       strlcat(sp->addr, ":", VCA_ADDRBUFSIZE);
+           port, sizeof port, NI_NUMERICHOST | NI_NUMERICSERV);
+       if (i) {
+               printf("getnameinfo = %d %s\n", i,
+                   gai_strerror(i));
+       }
+       strlcat(sp->addr, " ", VCA_ADDRBUFSIZE);
        strlcat(sp->addr, port, VCA_ADDRBUFSIZE);
        VSL(SLT_SessionOpen, sp->fd, "%s", sp->addr);
        sp->http = http_New();