diff --git a/daemon/call.c b/daemon/call.c index dc2ecdab9..566a75449 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -545,7 +545,6 @@ void xmlrpc_kill_calls(void *p) { struct xmlrpc_curl_xportparms xcxpp; xmlrpc_env_init(&e); - xmlrpc_client_setup_global_const(&e); ZERO(xcxpp); xcxpp.timeout = 5000; /* 5 seconds */ @@ -557,6 +556,8 @@ void xmlrpc_kill_calls(void *p) { xmlrpc_client_create(&e, XMLRPC_CLIENT_NO_FLAGS, "ngcp-mediaproxy-ng", MEDIAPROXY_VERSION, &cp, XMLRPC_CPSIZE(transportparm_size), &c); + if (e.fault_occurred) + abort(); while (xh->tags) { xmlrpc_client_call2f(&e, c, xh->url, "di", &r, "(ssss)", diff --git a/daemon/main.c b/daemon/main.c index 5f21e6b74..2d2c1b932 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "poller.h" #include "control.h" @@ -300,6 +301,20 @@ static void wpidfile(void) { } +static void init_everything() { + xmlrpc_env e; + + g_thread_init(NULL); + signals(); + resources(); + + xmlrpc_env_init(&e); + xmlrpc_client_setup_global_const(&e); + if (e.fault_occurred) + abort(); +} + + int main(int argc, char **argv) { struct poller *p; struct callmaster *m; @@ -311,10 +326,8 @@ int main(int argc, char **argv) { void *dlh; const char **strp; + init_everything(); options(&argc, &argv); - g_thread_init(NULL); - signals(); - resources(); if (table >= 0 && kernel_create_table(table)) {