[sr-dev] some pua_rpc progress
Juha Heinanen
jh at tutpro.com
Fri Dec 5 07:02:58 CET 2014
Daniel-Constantin Mierla writes:
> It seems you change the value of c inside publish:
>
> if (dctx->reply_ctx != 0) {
> /* callback was not executed or its execution failed */
> rpc = &dctx->rpc;
> c = dctx->reply_ctx;
> } else {
> return;
> }
>
> So it is no longer pointing to the same structure as in
> dispatch_rpc().
it is pointing to the same structure as in publish_callback and if the
callback is executed, everything works fine:
Dec 5 07:57:02 rautu /usr/bin/sip-proxy[32714]: INFO: pua_rpc [pua_rpc.c:222]: publish(): pua_send_publish returned 0
Dec 5 07:57:02 rautu /usr/bin/sip-proxy[32714]: INFO: xmlrpc [xmlrpc.c:2441]: dispatch_rpc(): reply was not sent
#
T 2014/12/05 07:57:02.516438 127.0.0.1:6060 -> 127.0.0.1:54971 [AP]
HTTP/1.1 200 OK.
Via: SIP/2.0/TCP 127.0.0.1:54971.
Server: OpenXg SIP Proxy (4.3.0-0 (i386/linux)).
Content-Length: 202.
.
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><int>200</int>
<string>OK</string>
<string>a.1417566804.11407.5.2</string>
<int>7776001</int>
</value>
</param>
</params>
</methodResponse>
the same assignments are done in tm/rpc_uac.c, which i have used as an
example.
i have tried also without the assignments (see below) and also then
xmlrpc debug tells that reply was not sent:
T 2014/12/05 07:45:50.696091 127.0.0.1:6060 -> 127.0.0.1:54963 [AP]
HTTP/1.1 200 OK.
Via: SIP/2.0/TCP 127.0.0.1:54963.
Server: OpenXg SIP Proxy (4.3.0-0 (i386/linux)).
Content-Length: 108.
.
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value></value>
</param>
</params>
</methodResponse>
####Dec 5 07:45:50 rautu /usr/bin/sip-proxy[32709]: INFO: pua_rpc [pua_rpc.c:222]: publish(): pua_send_publish returned 418
Dec 5 07:45:50 rautu /usr/bin/sip-proxy[32709]: INFO: xmlrpc [xmlrpc.c:2441]: dispatch_rpc(): reply was not sent
-- juha
static void publish(rpc_t* rpc, void* c)
{
...
dctx = rpc->delayed_ctx_new(c);
if (dctx == 0) {
LM_ERR("internal error: failed to create context\n");
rpc->fault(c, 500, "internal error: failed to create context");
return;
}
publ.cb_param = dctx;
publ.source_flag = MI_ASYN_PUBLISH;
ret = pua_send_publish(&publ);
LM_INFO("pua_send_publish returned %d\n", ret);
if (dctx->reply_ctx == 0)
/* callback was successfully executed */
return;
...
if (ret == 418) {
rpc->fault(c, 500, "Wrong ETag");
rpc->delayed_ctx_close(dctx);
}
return;
}
More information about the sr-dev
mailing list