From 8fcdd88e3592b18b39367bce2520975f207963cc Mon Sep 17 00:00:00 2001 From: phk Date: Fri, 24 Mar 2006 09:45:39 +0000 Subject: [PATCH] Log remote IP#:port on session open git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@66 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/bin/varnishd/cache.h | 2 ++ varnish-cache/bin/varnishd/cache_acceptor.c | 28 +++++++++++++++++---- varnish-cache/include/shmlog_tags.h | 3 ++- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index 2bd42f61..0ec110dd 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -3,9 +3,11 @@ */ #define VCA_RXBUFSIZE 1024 +#define VCA_ADDRBUFSIZE 32 struct sess { int fd; char rcv[VCA_RXBUFSIZE + 1]; + char addr[VCA_ADDRBUFSIZE]; unsigned rcv_len; struct event rd_e; }; diff --git a/varnish-cache/bin/varnishd/cache_acceptor.c b/varnish-cache/bin/varnishd/cache_acceptor.c index 43e1b714..beb01416 100644 --- a/varnish-cache/bin/varnishd/cache_acceptor.c +++ b/varnish-cache/bin/varnishd/cache_acceptor.c @@ -11,10 +11,14 @@ #include #include +#include + #include #include +#include "libvarnish.h" #include "heritage.h" +#include "shmlog.h" #include "cache.h" static struct event_base *evb; @@ -31,7 +35,14 @@ http_read_f(int fd, short event, void *arg) printf("%s(%d, %d, ...)\n", __func__, fd, event); assert(VCA_RXBUFSIZE - sp->rcv_len > 0); i = read(fd, sp->rcv + sp->rcv_len, VCA_RXBUFSIZE - sp->rcv_len); - assert(i > 0); + if (i <= 0) { + VSL(SLT_SessionClose, sp->fd, "remote %d", sp->rcv_len); + event_del(&sp->rd_e); + close(sp->fd); + free(sp); + return; + } + sp->rcv_len += i; sp->rcv[sp->rcv_len] = '\0'; @@ -58,11 +69,13 @@ accept_f(int fd, short event, void *arg __unused) socklen_t l; struct sockaddr addr; struct sess *sp; + char port[10]; sp = calloc(sizeof *sp, 1); - assert(sp != NULL); - - printf("%s(%d, %d, ...)\n", __func__, fd, event); + assert(sp != NULL); /* + * XXX: this is probably one we should handle + * XXX: accept, emit error NNN and close + */ l = sizeof addr; sp->fd = accept(fd, &addr, &l); @@ -70,7 +83,12 @@ accept_f(int fd, short event, void *arg __unused) free(sp); return; } - + AZ(getnameinfo(&addr, l, + sp->addr, VCA_ADDRBUFSIZE, + port, sizeof port, NI_NUMERICHOST | NI_NUMERICSERV)); + strlcat(sp->addr, ":", VCA_ADDRBUFSIZE); + strlcat(sp->addr, port, VCA_ADDRBUFSIZE); + VSL(SLT_SessionOpen, sp->fd, "%s", sp->addr); event_set(&sp->rd_e, sp->fd, EV_READ | EV_PERSIST, http_read_f, sp); event_base_set(evb, &sp->rd_e); diff --git a/varnish-cache/include/shmlog_tags.h b/varnish-cache/include/shmlog_tags.h index ce4885cc..d5da0145 100644 --- a/varnish-cache/include/shmlog_tags.h +++ b/varnish-cache/include/shmlog_tags.h @@ -7,7 +7,8 @@ */ SLTM(CLI) -SLTM(SessionId) +SLTM(SessionOpen) +SLTM(SessionClose) SLTM(ClientAddr) SLTM(Request) SLTM(URL) -- 2.39.5