--- include/types/stream_interface.h | 2 ++ src/frontend.c | 1 + src/proto_tcp.c | 1 + 3 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h index d59e3fb..16af806 100644 --- a/include/types/stream_interface.h +++ b/include/types/stream_interface.h @@ -73,6 +73,8 @@ enum { SI_FL_INDEP_STR = 0x0040, /* independant streams = don't update rex on write */ SI_FL_NOLINGER = 0x0080, /* may close without lingering. One-shot. */ SI_FL_SRC_ADDR = 0x1000, /* get the source ip/port with getsockname */ + SI_FL_TO_SET = 0x2000, /* addr.to is set */ + SI_FL_FROM_SET = 0x4000, /* addr.from is set */ }; /* target types */ diff --git a/src/frontend.c b/src/frontend.c index 12dc2c8..35c3ef3 100644 --- a/src/frontend.c +++ b/src/frontend.c @@ -54,6 +54,7 @@ void get_frt_addr(struct session *s) if (get_original_dst(s->si[0].fd, (struct sockaddr_in *)&s->si[0].addr.to, &namelen) == -1) getsockname(s->si[0].fd, (struct sockaddr *)&s->si[0].addr.to, &namelen); + s->si[0].flags |= SI_FL_TO_SET; s->flags |= SN_FRT_ADDR_SET; } diff --git a/src/proto_tcp.c b/src/proto_tcp.c index 6324196..39ef26b 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -443,6 +443,7 @@ int tcp_connect_server(struct stream_interface *si) if (getsockname(fd, (struct sockaddr *)&si->addr.from, &addrlen) == -1) { Warning("Cannot get source address for logging.\n"); } + si->flags |= SI_FL_FROM_SET; } fdtab[fd].owner = si; -- 1.7.5.3