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.
diff --git a/src/haproxy.c b/src/haproxy.c
index 0f593e3..96e39be 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -2580,15 +2580,13 @@
}
/*
- * Should only be called once per process
* This function register the accept wrapper for the sockpair of the master worker
*/
-
void mworker_pipe_register()
{
/* The iocb should be already initialized with listener_accept */
- if (fdtab[proc_self->ipc_fd[1]].iocb != listener_accept)
- abort();
+ if (fdtab[proc_self->ipc_fd[1]].iocb == mworker_accept_wrapper)
+ return;
fcntl(proc_self->ipc_fd[1], F_SETFL, O_NONBLOCK);
/* In multi-tread, we need only one thread to process