From 95c19be2abc3b2d4070c80344db7875adf23c22a Mon Sep 17 00:00:00 2001 From: Valentine Krasnobaeva Date: Thu, 27 Jun 2024 18:16:40 +0200 Subject: [PATCH] MINOR: startup: refactor "daemonization" fork Let's put "daemonization" fork into a switch-case. This is more readable and we don't need to allocate memory for the fork() return value here. --- src/haproxy.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/haproxy.c b/src/haproxy.c index c39621eb8..60c6fc6e9 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2121,14 +2121,22 @@ static void init(int argc, char **argv) if ((getenv("HAPROXY_MWORKER_REEXEC") == NULL) && (global.mode & MODE_DAEMON)) { ret = fork(); - if (ret < 0) { + switch(ret) { + case -1: ha_alert("[%s.main()] Cannot fork.\n", argv[0]); protocol_unbind_all(); exit(1); /* there has been an error */ - } else if (ret > 0) { /* parent leave to daemonize */ - exit(0); - } else /* change the process group ID in the child (master process) */ + case 0: + /* in child, change the process group ID, in the master-worker + * mode, this will be the master process + */ setsid(); + + break; + default: + /* in parent, which leaves to daemonize */ + exit(0); + } } if (global.mode & (MODE_MWORKER|MODE_MWORKER_WAIT))