]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: mworker: does not erase the pidfile upon reload
authorWilliam Lallemand <wlallemand@haproxy.org>
Mon, 14 Feb 2022 08:02:14 +0000 (09:02 +0100)
committerWilliam Lallemand <wlallemand@haproxy.org>
Mon, 14 Feb 2022 08:28:13 +0000 (09:28 +0100)
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.

src/haproxy.c

index f10af5eae4719b2cfa5328971e14362189452937..6f591d6ffff5d33b2c49d400a72c6e910857c2f4 100644 (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) {