global xmlrpc init must be done prior to any threading

remotes/origin/2.0
Richard Fuchs 13 years ago
parent 22043b686f
commit e5aa11aa6b

@ -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)",

@ -8,6 +8,7 @@
#include <arpa/inet.h>
#include <dlfcn.h>
#include <errno.h>
#include <xmlrpc_client.h>
#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)) {

Loading…
Cancel
Save