From: William Lallemand Date: Thu, 8 Nov 2018 11:00:14 +0000 (+0100) Subject: BUG/MEDIUM: cli: crash when trying to access a worker X-Git-Tag: v1.9-dev6~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e260e0df443b00d991e430515a6879bb186b3454;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: cli: crash when trying to access a worker When using the CLI proxy of the master and trying to access a worker with the @ prefix, the worker just crash. The commit 7216032 ("MEDIUM: mworker: leave when the master die") reintroduced the old code of the pipe, which was not trying to access the pointers before. The owner of the FD was modified to a different value, this is a problem since we call listener_accept() in most cases now from the mworker_accept_wrapper() and it casts the owner variable to get the listener. This patch fix the issue by setting back the previous owner of the FD. --- diff --git a/src/haproxy.c b/src/haproxy.c index 96e39be8b3..1d2971d4b4 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2592,7 +2592,7 @@ void mworker_pipe_register() /* In multi-tread, we need only one thread to process * events on the pipe with master */ - fd_insert(proc_self->ipc_fd[1], proc_self->ipc_fd, mworker_accept_wrapper, 1); + fd_insert(proc_self->ipc_fd[1], fdtab[proc_self->ipc_fd[1]].owner, mworker_accept_wrapper, 1); fd_want_recv(proc_self->ipc_fd[1]); }