Browse Source

alarms arent usable in a threaded environment, so use curl internal timeout instead

git.mgm/mediaproxy-ng/2.1
Richard Fuchs 14 years ago
parent
commit
d1fbf9bef9
1 changed files with 14 additions and 3 deletions
  1. +14
    -3
      daemon/call.c

+ 14
- 3
daemon/call.c View File

@ -541,23 +541,34 @@ void xmlrpc_kill_calls(void *p) {
xmlrpc_env e;
xmlrpc_client *c;
xmlrpc_value *r;
struct xmlrpc_clientparms cp;
struct xmlrpc_curl_xportparms xcxpp;
xmlrpc_env_init(&e);
xmlrpc_client_setup_global_const(&e);
xmlrpc_client_create(&e, XMLRPC_CLIENT_NO_FLAGS, "ngcp-mediaproxy-ng", MEDIAPROXY_VERSION, NULL, 0, &c);
ZERO(xcxpp);
xcxpp.timeout = 5000; /* 5 seconds */
ZERO(cp);
cp.transport = "curl";
cp.transportparmsP = &xcxpp;
cp.transportparm_size = XMLRPC_CXPSIZE(timeout);
xmlrpc_client_create(&e, XMLRPC_CLIENT_NO_FLAGS, "ngcp-mediaproxy-ng", MEDIAPROXY_VERSION,
&cp, XMLRPC_CPSIZE(transportparm_size), &c);
while (xh->tags) {
alarm(2);
xmlrpc_client_call2f(&e, c, xh->url, "di", &r, "(ssss)",
"sbc", "postControlCmd", xh->tags->data, "teardown");
xmlrpc_DECREF(r);
alarm(0);
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);
}
void kill_calls_timer(GSList *list, struct callmaster *m) {


Loading…
Cancel
Save