]> err.no Git - varnish/commitdiff
Move sockaddr->ascii conversion to tcp.c
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 10 Jul 2006 11:24:37 +0000 (11:24 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 10 Jul 2006 11:24:37 +0000 (11:24 +0000)
shmlog both ends of backend connections.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@404 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache.h
varnish-cache/bin/varnishd/cache_acceptor.c
varnish-cache/bin/varnishd/cache_backend.c
varnish-cache/bin/varnishd/common.h
varnish-cache/bin/varnishd/tcp.c

index b22a3d464061daf4b935f70f96b11f29a9773d76..ab0bc0e306fceb03f02c22c0180a96696dcd34c5 100644 (file)
@@ -11,8 +11,6 @@
 #include "vcl_returns.h"
 #include "common.h"
 
-#define VCA_ADDRBUFSIZE                64      /* Sizeof ascii network address */
-
 struct event_base;
 struct cli;
 struct sbuf;
@@ -133,7 +131,7 @@ struct sess {
        unsigned                xid;
 
        /* formatted ascii client address */
-       char                    addr[VCA_ADDRBUFSIZE];
+       char                    addr[TCP_ADDRBUFFSIZE];
 
        /* HTTP request */
        struct http             *http;
index 1779acb0edc5d4bd5c8d93c9fd2537cab540457d..329f10e228aa95597b4b716b326c86c936ab9111 100644 (file)
@@ -210,9 +210,8 @@ static void
 accept_f(int fd, short event __unused, void *arg __unused)
 {
        socklen_t l;
-       struct sockaddr addr[2];
+       struct sockaddr addr[2];        /* XXX: IPv6 hack */
        struct sess *sp;
-       char port[NI_MAXSERV];
        int i;
        struct linger linger;
 
@@ -238,15 +237,7 @@ accept_f(int fd, short event __unused, void *arg __unused)
        AZ(setsockopt(sp->fd, SOL_SOCKET, SO_LINGER, &linger, sizeof linger));
 #endif
 
-       i = getnameinfo(addr, l,
-           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);
+       TCP_name(addr, l, sp->addr);
        VSL(SLT_SessionOpen, sp->fd, "%s", sp->addr);
        time(&sp->t_resp);
        TAILQ_INSERT_TAIL(&sesshead, sp, list);
index 45f2aaa59057627c95c7ed635b778abad6b11665..792afd6948aaca3c196736420a65693ed14a68dc 100644 (file)
@@ -106,6 +106,7 @@ connect_to_backend(struct vbe_conn *vc, struct backend *bp)
 {
        struct addrinfo *res, *res0, hint;
        int error, s;
+       char buf[TCP_ADDRBUFFSIZE * 2 + 1], *p;
 
        assert(bp != NULL);
        assert(bp->hostname != NULL);
@@ -132,15 +133,22 @@ connect_to_backend(struct vbe_conn *vc, struct backend *bp)
                        continue;
                }
                error = connect(s, res0->ai_addr, res0->ai_addrlen);
-               if (!error)
+               if (!error) 
                        break;
                VSL(SLT_Debug, 0, "Connect errno=%d", errno);
                close(s);
                s = -1;
        } while ((res0 = res0->ai_next) != NULL);
-       freeaddrinfo(res);
        vc->fd = s;
-       VSL(SLT_BackendOpen, vc->fd, "");
+       if (s >= 0) {
+               TCP_myname(s, buf);
+               p = strchr(buf, '\0');
+               assert(p != NULL);
+               *p++ = ' ';
+               TCP_name(res0->ai_addr, res0->ai_addrlen, p);
+               VSL(SLT_BackendOpen, vc->fd, buf);
+       }
+       freeaddrinfo(res);
        return;
 }
 
index f0cb1972f86f02bc937ea706f5c5c3c85b389b58..b732cc768f2b20786a5d94a85194c30b48ad5d46 100644 (file)
@@ -2,5 +2,16 @@
  * $Id$
  */
 
+struct sockaddr;
+
+/* shmlog.c */
 void VSL_MgtInit(const char *fn, unsigned size);
 extern struct varnish_stats *VSL_stats;
+
+/* tcp.c */
+#define TCP_ADDRBUFFSIZE       64      /* Sizeof ascii representation */
+
+void TCP_name(struct sockaddr *addr, unsigned l, char *buf);
+void TCP_myname(int sock, char *buf);
+
+
index becf59d203e4839b3d380b313bc7ec49f9e095e5..42cbc97c6a7ae5791e2c24805a684b5b101befad 100644 (file)
 #include "mgt.h"
 #include "libvarnish.h"
 
+/*--------------------------------------------------------------------*/
+
+void
+TCP_name(struct sockaddr *addr, unsigned l, char *buf)
+{
+       int i;
+       char port[NI_MAXSERV];
+
+       i = getnameinfo(addr, l, buf, TCP_ADDRBUFFSIZE,
+           port, sizeof port, NI_NUMERICHOST | NI_NUMERICSERV);
+       if (i) {
+               printf("getnameinfo = %d %s\n", i, gai_strerror(i));
+               strcpy(buf, "Conversion:Failed");
+               return;
+       }
+       strlcat(buf, " ", TCP_ADDRBUFFSIZE);
+       strlcat(buf, port, TCP_ADDRBUFFSIZE);
+}
+
+/*--------------------------------------------------------------------*/
+
+void
+TCP_myname(int sock, char *buf)
+{
+       struct sockaddr addr[2];        /* XXX: IPv6 hack */
+       socklen_t l;
+
+       l = sizeof addr;
+       AZ(getsockname(sock, addr, &l));
+       TCP_name(addr, l, buf);
+}
+
+/*--------------------------------------------------------------------*/
+
 static void
 accept_filter(int fd)
 {