From f4833f6b74231d9a8b439b77d8b44a3582d785fc Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 6 Aug 2012 14:48:59 +0000 Subject: [PATCH] xmlrpc calls still causing segfaults, lets try with a dedicated client object per call... i'm starting to dislike this library --- daemon/call.c | 13 +++++++------ daemon/main.c | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index 6c8255b..9e77758 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -549,23 +549,24 @@ void xmlrpc_kill_calls(void *p) { xmlrpc_env_init(&e); - xmlrpc_client_create(&e, XMLRPC_CLIENT_NO_FLAGS, "ngcp-mediaproxy-ng", MEDIAPROXY_VERSION, - NULL, 0, &c); - if (e.fault_occurred) - abort(); - while (xh->tags) { + xmlrpc_client_create(&e, XMLRPC_CLIENT_NO_FLAGS, "ngcp-mediaproxy-ng", MEDIAPROXY_VERSION, + NULL, 0, &c); + if (e.fault_occurred) + abort(); + xmlrpc_client_call2f(&e, c, xh->url, "di", &r, "(ssss)", "sbc", "postControlCmd", xh->tags->data, "teardown"); if (r) xmlrpc_DECREF(r); + xmlrpc_client_destroy(c); xh->tags = g_slist_delete_link(xh->tags, xh->tags); } g_string_chunk_free(xh->c); g_slice_free1(sizeof(*xh), xh); - xmlrpc_client_destroy(c); + xmlrpc_env_clean(&e); } void kill_calls_timer(GSList *list, struct callmaster *m) { diff --git a/daemon/main.c b/daemon/main.c index 6f9b8dd..6e20e76 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -319,6 +319,7 @@ static void init_everything() { xmlrpc_client_setup_global_const(&e); if (e.fault_occurred) abort(); + xmlrpc_env_clean(&e); }