From: William Lallemand Date: Fri, 14 Dec 2018 18:31:21 +0000 (+0100) Subject: BUG/MINOR: mworker: don't use unitialized mworker_proc struct X-Git-Tag: v1.9-dev11~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6e0d8aee26dc0d54ddfc699e4ddd8dff90bf7cdb;p=thirdparty%2Fhaproxy.git BUG/MINOR: mworker: don't use unitialized mworker_proc struct If the reload fail after the parsing of the configuration, the mworker_proc structures are created for the processes it tried to create. The mworker_proc_list_to_env() function was exporting these unitialized structures in the "HAPROXY_PROCESSES" environment variable which was leading to this kind of output in "show proc": 4294967295 worker [was: 1] 1 17879d 16h26m28s --- diff --git a/src/haproxy.c b/src/haproxy.c index 0fa07ce4e6..20fc1dece7 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -540,7 +540,8 @@ static void mworker_proc_list_to_env() struct mworker_proc *child; list_for_each_entry(child, &proc_list, list) { - memprintf(&msg, "%s|type=%c;fd=%d;pid=%d;rpid=%d;reloads=%d;timestamp=%d", msg ? msg : "", child->type, child->ipc_fd[0], child->pid, child->relative_pid, child->reloads, child->timestamp); + if (child->pid > -1) + memprintf(&msg, "%s|type=%c;fd=%d;pid=%d;rpid=%d;reloads=%d;timestamp=%d", msg ? msg : "", child->type, child->ipc_fd[0], child->pid, child->relative_pid, child->reloads, child->timestamp); } if (msg) setenv("HAPROXY_PROCESSES", msg, 1);