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