From a90cacfd70921d597daa540485948e5fb007ea21 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Wed, 7 Nov 2018 08:38:32 +0100 Subject: [PATCH] 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. --- src/haproxy.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/haproxy.c b/src/haproxy.c index 0f593e3c6..96e39be8b 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -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 */ - 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