Replying to myself after looking at the code ;) Seems ip address gets overwritten with port number while formatting the ip_port string. Maybe fix it with something like attached patch.
-Jan On Tue, 6 Aug 2024 21:37:43 +0300 Jan Kämpe <jkamp...@gmail.com> wrote: > The clientip_clientport output seem incorrect in s6-socklog output when > using "-i ipport" option. > Example to reproduce; run > $ s6-socklog -i 192.168.21.1:10514 > > Then send test syslog message to s6-socklog listening on the UDP port > (here using "logger" on x86_64 debian linux) > $ logger -n 192.168.21.1 -P 10514 "Sample log message" > > The (start of) s6-socklog produced log line "clientip_clientport" looks > (usually) something like this: > 5511368.21.1_: user.notice: > > Can anyone else try to re-produce/confirm? > > -J
diff -up s6-2.13.0.0/src/daemontools-extras/s6-socklog.c.orig s6-2.13.0.0/src/daemontools-extras/s6-socklog.c --- s6-2.13.0.0/src/daemontools-extras/s6-socklog.c.orig 2024-08-08 21:45:07.257448848 +0300 +++ s6-2.13.0.0/src/daemontools-extras/s6-socklog.c 2024-08-08 21:46:02.416505236 +0300 @@ -194,7 +194,7 @@ int main (int argc, char const *const *a char fmt[IP46_FMT + UINT16_FMT + 3] ; size_t m = ip46_fmt(fmt, &ip) ; fmt[m++] = '_' ; - m += uint16_fmt(fmt, port) ; + m += uint16_fmt(&fmt[m], port) ; fmt[m++] = ':' ; fmt[m++] = ' ' ; buffer_putnoflush(&b1, fmt, m) ; }