This patch replace
  Alert(...); exit(1);
with
  Alert(1, ...)
when it's possible.
---
 src/haproxy.c | 176 +++++++++++++++++++++++++++++-----------------------------
 1 file changed, 87 insertions(+), 89 deletions(-)

diff --git a/src/haproxy.c b/src/haproxy.c
index 0c223e5..c1acea6 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -698,10 +698,9 @@ void init(int argc, char **argv)
 
                                while (argc > 1 && argv[1][0] != '-') {
                                        oldpids = realloc(oldpids, (nb_oldpids 
+ 1) * sizeof(int));
-                                       if (!oldpids) {
-                                               Alert("Cannot allocate old pid 
: out of memory.\n");
-                                               exit(1);
-                                       }
+                                       if (!oldpids)
+                                               Alert_exit(1, "Cannot allocate 
old pid : out of memory.\n");
+
                                        argc--; argv++;
                                        oldpids[nb_oldpids] = atol(*argv);
                                        if (oldpids[nb_oldpids] <= 0)
@@ -714,10 +713,11 @@ void init(int argc, char **argv)
                                argv++; argc--;
                                while (argc > 0) {
                                        wl = calloc(1, sizeof(*wl));
-                                       if (!wl) {
-                                               Alert("Cannot load 
configuration file %s : out of memory.\n", *argv);
-                                               exit(1);
-                                       }
+                                       if (!wl)
+                                               Alert_exit(1,
+                                                          "Cannot load 
configuration file %s : out of memory.\n",
+                                                          *argv);
+
                                        wl->s = *argv;
                                        LIST_ADDQ(&cfg_cfgfiles, &wl->list);
                                        argv++; argc--;
@@ -737,10 +737,11 @@ void init(int argc, char **argv)
                                case 'L' : strncpy(localpeer, *argv, 
sizeof(localpeer) - 1); break;
                                case 'f' :
                                        wl = calloc(1, sizeof(*wl));
-                                       if (!wl) {
-                                               Alert("Cannot load 
configuration file %s : out of memory.\n", *argv);
-                                               exit(1);
-                                       }
+                                       if (!wl)
+                                               Alert_exit(1,
+                                                          "Cannot load 
configuration file %s : out of memory.\n",
+                                                          *argv);
+
                                        wl->s = *argv;
                                        LIST_ADDQ(&cfg_cfgfiles, &wl->list);
                                        break;
@@ -761,10 +762,11 @@ void init(int argc, char **argv)
        if (LIST_ISEMPTY(&cfg_cfgfiles))
                usage(progname);
 
-       if (change_dir && chdir(change_dir) < 0) {
-               Alert("Could not change to directory %s : %s\n", change_dir, 
strerror(errno));
-               exit(1);
-       }
+       if (change_dir && chdir(change_dir) < 0)
+               Alert_exit(1,
+                          "Could not change to directory %s : %s\n",
+                          change_dir,
+                          strerror(errno));
 
        global.maxsock = 10; /* reserve 10 fds ; will be incremented by socket 
eaters */
 
@@ -774,13 +776,15 @@ void init(int argc, char **argv)
                int ret;
 
                ret = readcfgfile(wl->s);
-               if (ret == -1) {
-                       Alert("Could not open configuration file %s : %s\n",
-                             wl->s, strerror(errno));
-                       exit(1);
-               }
+               if (ret == -1)
+                       Alert_exit(1,
+                                  "Could not open configuration file %s : 
%s\n",
+                                  wl->s,
+                                  strerror(errno));
+
                if (ret & (ERR_ABORT|ERR_FATAL))
                        Alert("Error(s) found in configuration file : %s\n", 
wl->s);
+
                err_code |= ret;
                if (err_code & ERR_ABORT)
                        exit(1);
@@ -792,10 +796,8 @@ void init(int argc, char **argv)
 #endif
 
        err_code |= check_config_validity();
-       if (err_code & (ERR_ABORT|ERR_FATAL)) {
-               Alert("Fatal errors found in configuration.\n");
-               exit(1);
-       }
+       if (err_code & (ERR_ABORT|ERR_FATAL))
+               Alert_exit(1, "Fatal errors found in configuration.\n");
 
        /* recompute the amount of per-process memory depending on nbproc and
         * the shared SSL cache size (allowed to exist in all processes).
@@ -815,10 +817,8 @@ void init(int argc, char **argv)
 
 #ifdef CONFIG_HAP_NS
         err_code |= netns_init();
-        if (err_code & (ERR_ABORT|ERR_FATAL)) {
-                Alert("Failed to initialize namespace support.\n");
-                exit(1);
-        }
+        if (err_code & (ERR_ABORT|ERR_FATAL))
+                Alert_exit(1, "Failed to initialize namespace support.\n");
 #endif
 
        if (global.mode & MODE_CHECK) {
@@ -846,10 +846,9 @@ void init(int argc, char **argv)
        apply_server_state();
 
        global_listener_queue_task = task_new();
-       if (!global_listener_queue_task) {
-               Alert("Out of memory when initializing global task\n");
-               exit(1);
-       }
+       if (!global_listener_queue_task)
+               Alert_exit(1, "Out of memory when initializing global task\n");
+
        /* very simple initialization, users will queue the task if needed */
        global_listener_queue_task->context = NULL; /* not even a context! */
        global_listener_queue_task->process = manage_global_listener_queue;
@@ -866,11 +865,10 @@ void init(int argc, char **argv)
 
        for (px = proxy; px; px = px->next) {
                err_code |= flt_init(px);
-               if (err_code & (ERR_ABORT|ERR_FATAL)) {
-                       Alert("Failed to initialize filters for proxy '%s'.\n",
-                             px->id);
-                       exit(1);
-               }
+               if (err_code & (ERR_ABORT|ERR_FATAL))
+                       Alert_exit(1,
+                                  "Failed to initialize filters for proxy 
'%s'.\n",
+                                  px->id);
        }
 
        if (start_checks() < 0)
@@ -965,15 +963,14 @@ void init(int argc, char **argv)
                global.maxsslconn = sslmem / (global.ssl_session_max_cost + 
global.ssl_handshake_max_cost);
                global.maxsslconn = round_2dig(global.maxsslconn);
 
-               if (sslmem <= 0 || global.maxsslconn < sides) {
-                       Alert("Cannot compute the automatic maxsslconn because 
global.maxconn is already too "
-                             "high for the global.memmax value (%d MB). The 
absolute maximum possible value "
-                             "without SSL is %d, but %d was found and SSL is 
in use.\n",
-                             global.rlimit_memmax,
-                             (int)(mem / (STREAM_MAX_COST + 2 * 
global.tune.bufsize)),
-                             global.maxconn);
-                       exit(1);
-               }
+               if (sslmem <= 0 || global.maxsslconn < sides)
+                       Alert_exit(1,
+                                  "Cannot compute the automatic maxsslconn 
because global.maxconn is already too "
+                                  "high for the global.memmax value (%d MB). 
The absolute maximum possible value "
+                                  "without SSL is %d, but %d was found and SSL 
is in use.\n",
+                                  global.rlimit_memmax,
+                                  (int)(mem / (STREAM_MAX_COST + 2 * 
global.tune.bufsize)),
+                                  global.maxconn);
 
                if (global.maxsslconn > sides * global.maxconn)
                        global.maxsslconn = sides * global.maxconn;
@@ -1005,15 +1002,14 @@ void init(int argc, char **argv)
                        global.maxconn = DEFAULT_MAXCONN;
 #endif /* SYSTEM_MAXCONN */
 
-               if (clearmem <= 0 || !global.maxconn) {
-                       Alert("Cannot compute the automatic maxconn because 
global.maxsslconn is already too "
-                             "high for the global.memmax value (%d MB). The 
absolute maximum possible value "
-                             "is %d, but %d was found.\n",
-                             global.rlimit_memmax,
-                             (int)(mem / (global.ssl_session_max_cost + 
global.ssl_handshake_max_cost)),
-                             global.maxsslconn);
-                       exit(1);
-               }
+               if (clearmem <= 0 || !global.maxconn)
+                       Alert_exit(1,
+                                  "Cannot compute the automatic maxconn 
because global.maxsslconn is already too "
+                                  "high for the global.memmax value (%d MB). 
The absolute maximum possible value "
+                                  "is %d, but %d was found.\n",
+                                  global.rlimit_memmax,
+                                  (int)(mem / (global.ssl_session_max_cost + 
global.ssl_handshake_max_cost)),
+                                  global.maxsslconn);
 
                if (global.mode & (MODE_VERBOSE|MODE_DEBUG)) {
                        if (sides && global.maxsslconn > sides * 
global.maxconn) {
@@ -1134,19 +1130,19 @@ void init(int argc, char **argv)
                list_filters(stderr);
        }
 
-       if (!init_pollers()) {
-               Alert("No polling mechanism available.\n"
-                     "  It is likely that haproxy was built with 
TARGET=generic and that FD_SETSIZE\n"
-                     "  is too low on this platform to support maxconn and the 
number of listeners\n"
-                     "  and servers. You should rebuild haproxy specifying 
your system using TARGET=\n"
-                     "  in order to support other polling systems (poll, 
epoll, kqueue) or reduce the\n"
-                     "  global maxconn setting to accommodate the system's 
limitation. For reference,\n"
-                     "  FD_SETSIZE=%d on this system, global.maxconn=%d 
resulting in a maximum of\n"
-                     "  %d file descriptors. You should thus reduce 
global.maxconn by %d. Also,\n"
-                     "  check build settings using 'haproxy -vv'.\n\n",
-                     FD_SETSIZE, global.maxconn, global.maxsock, 
(global.maxsock + 1 - FD_SETSIZE) / 2);
-               exit(1);
-       }
+       if (!init_pollers())
+               Alert_exit(1,
+                          "No polling mechanism available.\n"
+                          "  It is likely that haproxy was built with 
TARGET=generic and that FD_SETSIZE\n"
+                          "  is too low on this platform to support maxconn 
and the number of listeners\n"
+                          "  and servers. You should rebuild haproxy 
specifying your system using TARGET=\n"
+                          "  in order to support other polling systems (poll, 
epoll, kqueue) or reduce the\n"
+                          "  global maxconn setting to accommodate the 
system's limitation. For reference,\n"
+                          "  FD_SETSIZE=%d on this system, global.maxconn=%d 
resulting in a maximum of\n"
+                          "  %d file descriptors. You should thus reduce 
global.maxconn by %d. Also,\n"
+                          "  check build settings using 'haproxy -vv'.\n\n",
+                          FD_SETSIZE, global.maxconn, global.maxsock, 
(global.maxsock + 1 - FD_SETSIZE) / 2);
+
        if (global.mode & (MODE_VERBOSE|MODE_DEBUG)) {
                printf("Using %s() as the polling mechanism.\n", 
cur_poller.name);
        }
@@ -1729,24 +1725,27 @@ int main(int argc, char **argv)
                exit(1);
        }
 
-       if (listeners == 0) {
-               Alert("[%s.main()] No enabled listener found (check for 'bind' 
directives) ! Exiting.\n", argv[0]);
+       if (listeners == 0)
                /* Note: we don't have to send anything to the old pids because 
we
                 * never stopped them. */
-               exit(1);
-       }
+               Alert_exit(1,
+                          "[%s.main()] No enabled listener found (check for 
'bind' directives) ! Exiting.\n",
+                          argv[0]);
 
        err = protocol_bind_all(errmsg, sizeof(errmsg));
        if ((err & ~ERR_WARN) != ERR_NONE) {
                if ((err & ERR_ALERT) || (err & ERR_WARN))
                        Alert("[%s.main()] %s.\n", argv[0], errmsg);
 
-               Alert("[%s.main()] Some protocols failed to start their 
listeners! Exiting.\n", argv[0]);
                protocol_unbind_all(); /* cleanup everything we can */
                if (nb_oldpids)
                        tell_old_pids(SIGTTIN);
-               exit(1);
-       } else if (err & ERR_WARN) {
+
+               Alert_exit(1,
+                          "[%s.main()] Some protocols failed to start their 
listeners! Exiting.\n",
+                          argv[0]);
+       }
+       else if (err & ERR_WARN) {
                Alert("[%s.main()] %s.\n", argv[0], errmsg);
        }
 
@@ -1767,19 +1766,21 @@ int main(int argc, char **argv)
                unlink(global.pidfile);
                pidfd = open(global.pidfile, O_CREAT | O_WRONLY | O_TRUNC, 
0644);
                if (pidfd < 0) {
-                       Alert("[%s.main()] Cannot create pidfile %s\n", 
argv[0], global.pidfile);
                        if (nb_oldpids)
                                tell_old_pids(SIGTTIN);
                        protocol_unbind_all();
-                       exit(1);
+                       Alert_exit(1,
+                                  "[%s.main()] Cannot create pidfile %s\n",
+                                  argv[0],
+                                  global.pidfile);
                }
        }
 
        if ((global.last_checks & LSTCHK_NETADM) && global.uid) {
-               Alert("[%s.main()] Some configuration options require full 
privileges, so global.uid cannot be changed.\n"
-                     "", argv[0]);
                protocol_unbind_all();
-               exit(1);
+               Alert_exit(1,
+                          "[%s.main()] Some configuration options require full 
privileges, so global.uid cannot be changed.\n",
+                          argv[0]);
        }
 
        /* If the user is not root, we'll still let him try the configuration
@@ -1793,11 +1794,10 @@ int main(int argc, char **argv)
        /* chroot if needed */
        if (global.chroot != NULL) {
                if (chroot(global.chroot) == -1 || chdir("/") == -1) {
-                       Alert("[%s.main()] Cannot chroot(%s).\n", argv[0], 
global.chroot);
                        if (nb_oldpids)
                                tell_old_pids(SIGTTIN);
                        protocol_unbind_all();
-                       exit(1);
+                       Alert_exit(1, "[%s.main()] Cannot chroot(%s).\n", 
argv[0], global.chroot);
                }
        }
 
@@ -1815,16 +1815,14 @@ int main(int argc, char **argv)
                                " without 'uid'/'user' is generally 
useless.\n", argv[0]);
 
                if (setgid(global.gid) == -1) {
-                       Alert("[%s.main()] Cannot set gid %d.\n", argv[0], 
global.gid);
                        protocol_unbind_all();
-                       exit(1);
+                       Alert_exit(1, "[%s.main()] Cannot set gid %d.\n", 
argv[0], global.gid);
                }
        }
 
        if (global.uid && setuid(global.uid) == -1) {
-               Alert("[%s.main()] Cannot set uid %d.\n", argv[0], global.uid);
                protocol_unbind_all();
-               exit(1);
+               Alert_exit(1, "[%s.main()] Cannot set uid %d.\n", argv[0], 
global.uid);
        }
 
        /* check ulimits */
@@ -1846,9 +1844,9 @@ int main(int argc, char **argv)
                for (proc = 0; proc < global.nbproc; proc++) {
                        ret = fork();
                        if (ret < 0) {
-                               Alert("[%s.main()] Cannot fork.\n", argv[0]);
+                               /* there has been an error */
                                protocol_unbind_all();
-                               exit(1); /* there has been an error */
+                               Alert_exit(1, "[%s.main()] Cannot fork.\n", 
argv[0]);
                        }
                        else if (ret == 0) /* child breaks here */
                                break;
-- 
2.8.2


Reply via email to