mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-24 14:33:16 +00:00
BUG/MEDIUM: log: don't CLOEXEC the inherited FDs
When configuring the logs with a FD and using the master worker, the FD was closed upon a reload because it was configured with CLOEXEC. It leads to using the wrong FD for the logs and to close them. Which is unfortunate since the master rely on the FD left opened during a reload. The fix is to stop doing a CLOEXEC when the FD is inherited. No backport needed.
This commit is contained in:
parent
2e8fad9c30
commit
a8b2671cf6
11
src/log.c
11
src/log.c
@ -1378,12 +1378,13 @@ void __send_log(struct proxy *p, int level, char *message, size_t size, char *sd
|
||||
nblogger, strerror(errno), errno);
|
||||
}
|
||||
continue;
|
||||
} else {
|
||||
/* we don't want to receive anything on this socket */
|
||||
setsockopt(*plogfd, SOL_SOCKET, SO_RCVBUF, &zero, sizeof(zero));
|
||||
/* does nothing under Linux, maybe needed for others */
|
||||
shutdown(*plogfd, SHUT_RD);
|
||||
fcntl(*plogfd, F_SETFD, fcntl(*plogfd, F_GETFD, FD_CLOEXEC) | FD_CLOEXEC);
|
||||
}
|
||||
/* we don't want to receive anything on this socket */
|
||||
setsockopt(*plogfd, SOL_SOCKET, SO_RCVBUF, &zero, sizeof(zero));
|
||||
/* does nothing under Linux, maybe needed for others */
|
||||
shutdown(*plogfd, SHUT_RD);
|
||||
fcntl(*plogfd, F_SETFD, fcntl(*plogfd, F_GETFD, FD_CLOEXEC) | FD_CLOEXEC);
|
||||
}
|
||||
|
||||
switch (logsrv->format) {
|
||||
|
Loading…
Reference in New Issue
Block a user