Le 06/10/2026 à 11:12 AM, ygkat a écrit :
From: Yeonggi Kim <[email protected]>

Hi,

Since 5da704b55 ("MEDIUM: log: Update the log applet to use its own
buffers"), merged in 3.3-dev4, syslog_io_handler() returns early on an
empty input buffer and no longer reaches applet_getchar(), which is
where it noticed the client's shutdown. A TCP syslog session of a
log-forward section whose client closes after its last message was
consumed therefore stays open. A log-forward section does not inherit
"timeout client" from the defaults section, so without one set in the
section, the session never ends.

Impact: each such client leaves a session behind, and a soft-stop then
waits for "hard-stop-after" (forever without it). We hit it on 3.4 with
a "ring" forwarding to a log-forward section of the same process: on
reload, the ring's forwarder closes its connection, the log-forward
session stays, and the old process is only stopped by
"hard-stop-after".

A reproducer is in the commit message of 1/2.

The series:
   - 1/2 lets an empty buffer reach applet_getchar() again, and only
     leaves early when no input buffer is available, like the dns and
     peers applets do.
   - 2/2 adds reg-tests/log/log_forward_tcp_close.vtc. It fails (timeout)
     without 1/2 on master bd884a2, 3.4.6 and 3.3.16, and passes with
     it, as well as on 3.2.25, which is not affected. The other
     reg-tests/log tests and reg-tests/ssl/log_forward_ssl.vtc pass with
     and without the series.

Both should be backported as far as 3.3.

Thanks,
Yeonggi Kim

Yeonggi Kim (2):
   BUG/MEDIUM: log: do not ignore the peer's shutdown in the syslog
     applet
   REGTESTS: log: check that a log-forward TCP session ends on client
     close

  reg-tests/log/log_forward_tcp_close.vtc | 60 +++++++++++++++++++++++++
  src/log.c                               |  7 ++-
  2 files changed, 65 insertions(+), 2 deletions(-)
  create mode 100644 reg-tests/log/log_forward_tcp_close.vtc



Thanks ! now merged. Just a quick note, for next contributions, try to add the reg-tests in the patch fixing the bug. This simplify a bit the backports.

--
Christopher Faulet



Reply via email to