]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: log: make sure writev() is not interrupted on a file output
authorWilly Tarreau <w@1wt.eu>
Fri, 26 Jul 2019 13:10:39 +0000 (15:10 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 26 Jul 2019 13:46:18 +0000 (15:46 +0200)
commit9fbcb7e2e9c32659ab11927394fec2e160be2d0b
tree5bf7959296024a006abc95c928ef1ac8b7f5442b
parent7859526fd6ce7ea33e20b7e532b21aa2465cb11d
BUG/MINOR: log: make sure writev() is not interrupted on a file output

Since 1.9 we support sending logs to various non-blocking outputs like
stdou/stderr or flies, by using writev() which guarantees that it only
returns after having written everything or nothing. However the syscall
may be interrupted while doing so, and this is visible when writing to
a tty during debug sessions, as some logs occasionally appear interleaved
if an xterm or SSH connection is not very fast. Performance here is not a
critical concern, log correctness is. Let's simply take the logger's lock
around the writev() call to prevent multiple senders from stepping onto
each other's toes.

This may be backported to 2.0 and 1.9.
src/log.c