BUG/MEDIUM: mworker: does not abort() in mworker_pipe_register()

The process was aborting with nbthread > 1.

The mworker_pipe_register() could be called several time in multithread
mode, we don't want to abort() there.
This commit is contained in:
William Lallemand 2018-11-07 08:38:32 +01:00 committed by Willy Tarreau
parent 8ccd2081f5
commit a90cacfd70

View File

@ -2580,15 +2580,13 @@ void mworker_accept_wrapper(int fd)
} }
/* /*
* Should only be called once per process
* This function register the accept wrapper for the sockpair of the master worker * This function register the accept wrapper for the sockpair of the master worker
*/ */
void mworker_pipe_register() void mworker_pipe_register()
{ {
/* The iocb should be already initialized with listener_accept */ /* The iocb should be already initialized with listener_accept */
if (fdtab[proc_self->ipc_fd[1]].iocb != listener_accept) if (fdtab[proc_self->ipc_fd[1]].iocb == mworker_accept_wrapper)
abort(); return;
fcntl(proc_self->ipc_fd[1], F_SETFL, O_NONBLOCK); fcntl(proc_self->ipc_fd[1], F_SETFL, O_NONBLOCK);
/* In multi-tread, we need only one thread to process /* In multi-tread, we need only one thread to process