r404 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Mon Jul 10 13:24:37 CEST 2006


Author: phk
Date: 2006-07-10 13:24:37 +0200 (Mon, 10 Jul 2006)
New Revision: 404

Modified:
   trunk/varnish-cache/bin/varnishd/cache.h
   trunk/varnish-cache/bin/varnishd/cache_acceptor.c
   trunk/varnish-cache/bin/varnishd/cache_backend.c
   trunk/varnish-cache/bin/varnishd/common.h
   trunk/varnish-cache/bin/varnishd/tcp.c
Log:
Move sockaddr->ascii conversion to tcp.c

shmlog both ends of backend connections.


Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h	2006-07-10 10:56:12 UTC (rev 403)
+++ trunk/varnish-cache/bin/varnishd/cache.h	2006-07-10 11:24:37 UTC (rev 404)
@@ -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 @@
 	unsigned		xid;
 
 	/* formatted ascii client address */
-	char			addr[VCA_ADDRBUFSIZE];
+	char			addr[TCP_ADDRBUFFSIZE];
 
 	/* HTTP request */
 	struct http		*http;

Modified: trunk/varnish-cache/bin/varnishd/cache_acceptor.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_acceptor.c	2006-07-10 10:56:12 UTC (rev 403)
+++ trunk/varnish-cache/bin/varnishd/cache_acceptor.c	2006-07-10 11:24:37 UTC (rev 404)
@@ -210,9 +210,8 @@
 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 @@
 	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);

Modified: trunk/varnish-cache/bin/varnishd/cache_backend.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_backend.c	2006-07-10 10:56:12 UTC (rev 403)
+++ trunk/varnish-cache/bin/varnishd/cache_backend.c	2006-07-10 11:24:37 UTC (rev 404)
@@ -106,6 +106,7 @@
 {
 	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 @@
 			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);
+	vc->fd = s;
+	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);
-	vc->fd = s;
-	VSL(SLT_BackendOpen, vc->fd, "");
 	return;
 }
 

Modified: trunk/varnish-cache/bin/varnishd/common.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/common.h	2006-07-10 10:56:12 UTC (rev 403)
+++ trunk/varnish-cache/bin/varnishd/common.h	2006-07-10 11:24:37 UTC (rev 404)
@@ -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);
+
+

Modified: trunk/varnish-cache/bin/varnishd/tcp.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/tcp.c	2006-07-10 10:56:12 UTC (rev 403)
+++ trunk/varnish-cache/bin/varnishd/tcp.c	2006-07-10 11:24:37 UTC (rev 404)
@@ -14,6 +14,40 @@
 #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)
 {




More information about the varnish-commit mailing list