BUG/MINOR: mworker: does not erase the pidfile upon reload

When started in master-worker mode combined with daemon mode, HAProxy
will open() with O_TRUNC the pidfile when switching to wait mode.

In 2.5, it happens  everytime after trying to load the configuration,
since we switch to wait mode.

In previous version this happens upon a failure of the configuration
loading.

Fixes bug #1545.

Must be backported in every supported branches.
This commit is contained in:
William Lallemand 2022-02-14 09:02:14 +01:00
parent 6fed59c7c1
commit 7b820a6191

View File

@ -3069,7 +3069,8 @@ int main(int argc, char **argv)
}
/* open log & pid files before the chroot */
if ((global.mode & MODE_DAEMON || global.mode & MODE_MWORKER) && global.pidfile != NULL) {
if ((global.mode & MODE_DAEMON || global.mode & MODE_MWORKER) &&
!(global.mode & MODE_MWORKER_WAIT) && global.pidfile != NULL) {
unlink(global.pidfile);
pidfd = open(global.pidfile, O_CREAT | O_WRONLY | O_TRUNC, 0644);
if (pidfd < 0) {