[MINOR] Support listener's sockets unix on http logs.
Enhance controls of sockets family on X-Forwarded-For and X-Original-To insert
diff --git a/src/proto_http.c b/src/proto_http.c
index a5e6e16..4f0d48f 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -869,10 +869,12 @@
inet_ntop(AF_INET,
(const void *)&((struct sockaddr_in *)&s->cli_addr)->sin_addr,
pn, sizeof(pn));
- else
+ else if (s->cli_addr.ss_family == AF_INET6)
inet_ntop(AF_INET6,
(const void *)&((struct sockaddr_in6 *)(&s->cli_addr))->sin6_addr,
pn, sizeof(pn));
+ else
+ snprintf(pn, sizeof(pn), "unix:%d", s->listener->luid);
get_gmtime(s->logs.accept_date.tv_sec, &tm);
@@ -912,9 +914,10 @@
w = snprintf(h, sizeof(tmpline) - (h - tmpline),
" %d %03d",
- (s->cli_addr.ss_family == AF_INET) ?
- ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
- ntohs(((struct sockaddr_in6 *)&s->cli_addr)->sin6_port),
+ s->cli_addr.ss_family == AF_UNIX ? s->listener->luid :
+ ntohs((s->cli_addr.ss_family == AF_INET) ?
+ ((struct sockaddr_in *)&s->cli_addr)->sin_port :
+ ((struct sockaddr_in6 *)&s->cli_addr)->sin6_port),
(int)s->logs.accept_date.tv_usec/1000);
if (w < 0 || w >= sizeof(tmpline) - (h - tmpline))
goto trunc;
@@ -1100,7 +1103,7 @@
inet_ntop(AF_INET,
(const void *)&((struct sockaddr_in *)&s->cli_addr)->sin_addr,
pn, sizeof(pn));
- else
+ else if (s->cli_addr.ss_family == AF_INET6)
inet_ntop(AF_INET6,
(const void *)&((struct sockaddr_in6 *)(&s->cli_addr))->sin6_addr,
pn, sizeof(pn));
@@ -1167,10 +1170,11 @@
"%s:%d [%02d/%s/%04d:%02d:%02d:%02d.%03d]"
" %s %s/%s %d/%ld/%ld/%ld/%s%ld %d %s%lld"
" %s %s %c%c%c%c %d/%d/%d/%d/%s%u %ld/%ld%s\n",
- pn,
- (s->cli_addr.ss_family == AF_INET) ?
- ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
- ntohs(((struct sockaddr_in6 *)&s->cli_addr)->sin6_port),
+ (s->cli_addr.ss_family == AF_UNIX) ? "unix" : pn,
+ (s->cli_addr.ss_family == AF_UNIX) ? s->listener->luid :
+ ntohs((s->cli_addr.ss_family == AF_INET) ?
+ ((struct sockaddr_in *)&s->cli_addr)->sin_port :
+ ((struct sockaddr_in6 *)&s->cli_addr)->sin6_port),
tm.tm_mday, monthname[tm.tm_mon], tm.tm_year+1900,
tm.tm_hour, tm.tm_min, tm.tm_sec, (int)s->logs.accept_date.tv_usec/1000,
fe->id, be->id, svid,
@@ -3535,12 +3539,13 @@
if (!(s->flags & SN_FRT_ADDR_SET))
get_frt_addr(s);
- if ((!s->fe->except_mask_to.s_addr ||
- (((struct sockaddr_in *)&s->frt_addr)->sin_addr.s_addr & s->fe->except_mask_to.s_addr)
- != s->fe->except_to.s_addr) &&
- (!s->be->except_mask_to.s_addr ||
- (((struct sockaddr_in *)&s->frt_addr)->sin_addr.s_addr & s->be->except_mask_to.s_addr)
- != s->be->except_to.s_addr)) {
+ if (s->frt_addr.ss_family == AF_INET &&
+ ((!s->fe->except_mask_to.s_addr ||
+ (((struct sockaddr_in *)&s->frt_addr)->sin_addr.s_addr & s->fe->except_mask_to.s_addr)
+ != s->fe->except_to.s_addr) &&
+ (!s->be->except_mask_to.s_addr ||
+ (((struct sockaddr_in *)&s->frt_addr)->sin_addr.s_addr & s->be->except_mask_to.s_addr)
+ != s->be->except_to.s_addr))) {
int len;
unsigned char *pn;
pn = (unsigned char *)&((struct sockaddr_in *)&s->frt_addr)->sin_addr;