From: Tim Duesterhus Date: Sun, 12 Nov 2017 16:39:18 +0000 (+0100) Subject: BUG/MEDIUM: mworker: Fix re-exec when haproxy is started from PATH X-Git-Tag: v1.8-rc4~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0436ab78416e1066fb8f65d33496ac1ee4d685d1;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: mworker: Fix re-exec when haproxy is started from PATH If haproxy is started using the name of the binary only (i.e. not using a relative or absolute path) the `execv` in `mworker_reload` fails with `ENOENT`, because it does not examine the `PATH`: [WARNING] 315/161139 (7) : Reexecuting Master process [WARNING] 315/161139 (7) : Cannot allocate memory [WARNING] 315/161139 (7) : Failed to reexecute the master processs [7] The error messages are misleading, because the return value of `execv` is not checked. This should be fixed in a separate commit. Once this happened the master process ignores any further signals sent by the administrator. Replace `execv` with `execvp` to establish the expected behaviour. This bug was introduced in commit 73b85e75b3963086be889e1fb40a59e7ef2ad63b. --- diff --git a/src/haproxy.c b/src/haproxy.c index a22ed321f0..b4f6a4f880 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -650,7 +650,7 @@ static void mworker_reload() deinit(); /* we don't want to leak FD there */ Warning("Reexecuting Master process\n"); - execv(next_argv[0], next_argv); + execvp(next_argv[0], next_argv); alloc_error: Warning("Cannot allocate memory\n");