diff --git a/src/mworker.c b/src/mworker.c index 0d788ca3d..e6c8e51b0 100644 --- a/src/mworker.c +++ b/src/mworker.c @@ -177,7 +177,7 @@ int mworker_env_to_proc_list() env = getenv("HAPROXY_PROCESSES"); if (!env) - return 0; + goto no_env; omsg = msg = strdup(env); if (!msg) { @@ -254,6 +254,24 @@ int mworker_env_to_proc_list() unsetenv("HAPROXY_PROCESSES"); +no_env: + + if (!proc_self) { + + proc_self = mworker_proc_new(); + if (!proc_self) { + ha_alert("Cannot allocate process structures.\n"); + err = -1; + goto out; + } + proc_self->options |= PROC_O_TYPE_MASTER; + proc_self->pid = pid; + proc_self->timestamp = 0; /* we don't know the startime anymore */ + + LIST_APPEND(&proc_list, &proc_self->list); + ha_warning("The master internals are corrupted or it was started with a too old version (< 1.9). Please restart the master process.\n"); + } + out: free(omsg); return err;