#include <haproxy/signal-t.h>
extern int max_reloads;
+extern int load_status;
extern struct mworker_proc *proc_self;
/* master CLI configuration (-S flag) */
extern struct list mworker_cli_conf;
kill(proc->pid, oldpids_sig);
}
}
- setenv("HAPROXY_LOAD_SUCCESS", "1", 1);
+ load_status = 1;
ha_notice("Loading success.\n");
#if defined(USE_SYSTEMD)
sock_drop_unused_old_sockets();
usermsgs_clr(NULL);
- setenv("HAPROXY_LOAD_SUCCESS", "0", 1);
+ load_status = 0;
ha_warning("Failed to load worker!\n");
#if defined(USE_SYSTEMD)
/* the sd_notify API is not able to send a reload failure signal. So
struct mworker_proc *proc;
char *errmsg = NULL;
- /* HAPROXY_LOAD_SUCCESS is checked in cli_io_handler_show_cli_sock() to
+ /* load_status is global and checked in cli_io_handler_show_cli_sock() to
* dump master startup logs with its alerts/warnings via master CLI sock.
*/
- setenv("HAPROXY_LOAD_SUCCESS", "0", 1);
+ load_status = 0;
/* increment the number failed reloads */
list_for_each_entry(proc, &proc_list, list) {
static int exitcode = -1;
int max_reloads = INT_MAX; /* max number of reloads a worker can have until they are killed */
+int load_status; /* worker process startup status: 1 - loaded successfully; 0 - load failed */
struct mworker_proc *proc_self = NULL; /* process structure of current process */
struct list mworker_cli_conf = LIST_HEAD_INIT(mworker_cli_conf); /* master CLI configuration (-S flag) */
static int cli_io_handler_show_loadstatus(struct appctx *appctx)
{
struct mworker_proc *proc;
- char *env;
if (!cli_has_level(appctx, ACCESS_LVL_OPER))
return 1;
}
}
- env = getenv("HAPROXY_LOAD_SUCCESS");
- if (!env)
- return 1;
-
- if (strcmp(env, "0") == 0) {
+ if (load_status == 0)
chunk_printf(&trash, "Success=0\n");
- } else if (strcmp(env, "1") == 0) {
+ else
chunk_printf(&trash, "Success=1\n");
- }
+
#ifdef USE_SHM_OPEN
if (startup_logs && ring_data(startup_logs) > 1)
chunk_appendf(&trash, "--\n");