[SR-Users] RPC, XMLRPC or other
Kristofer Signer
kristofer.signer at gmail.com
Mon Nov 12 15:58:25 CET 2012
Hello,
running kamailio 3.3.2.
On Mon, Nov 12, 2012 at 1:48 PM, Daniel-Constantin Mierla <miconda at gmail.com
> wrote:
> Hello,
>
>
> On 11/12/12 10:02 AM, Kristofer Signer wrote:
>
>> Hello,
>>
>> I'm trying to dig in to the kamailio XMLRPC interfaces and the
>> limitations I read in http://www.kamailio.org/docs/**
>> modules/stable/modules/xmlrpc.**html#xmlrpc.implementation.**limitations<http://www.kamailio.org/docs/modules/stable/modules/xmlrpc.html#xmlrpc.implementation.limitations>
>>
>> is really a no go for us.
>>
> which one is a 'no go'? Nested structures are supported in the last
> version, iirc, the readme does not seem to be updated for this case.
the 'no go' is the structure {AoR, HashID, Contact, AoR, HashID, Contacts,
...}
>
>
>
>> For example, when to retrieve user locations and list of dialogs we get a
>> xml document which is not so well formatted and we can not successfully
>> parse it in an xmlrpc-parser.
>>
>> Is there other options for xmlrpc module?
>>
>
> If the body is not successfully parsed, it is a bug. The limitation is
> about not supporting all the data types, but when a reply is xmlrpc sent,
> it should be valid. Can you test it with 1-2 location records that fail and
> post the xmrpc here as well as the log error messages from the xml parser?
>
Actually, I don't get any errors. I'm using the python example provided in
kamailio src and that example will only parse out one record.
[krsi at vera examples]$ python xmlrpc_test2.py ul.dump foo
{'Domain': 'location', 'Stats': {'Records': 2, 'Max-Slots': 1}, 'AoRs':
{'HashID': 1731621673, 'AoR': 'jkp-01', 'Contacts': {'Contact': {'Ruid':
'uloc-50a0ea3c-124bf-1', 'Received': '[not set]', 'Path': '[not set]',
'Reg-Id': 0, 'Expires': 99, 'Flags': 0, 'User-Agent': 'Jitsi1.0-Linux',
'Q': 0.0, 'Instance': '[not set]', 'State': 'CS_SYNC', 'CSeq': 11,
'Methods': 18446744073709551615L, 'CFlags': 0, 'Address':
'sip:jkp-01 at 192.168.0.214:25060;transport=udp;registering_acc=foo_bar_com',
'Call-ID': '61ac73a44826f3887a5db2371b044275 at 0:0:0:0:0:0:0:0', 'Socket':
'udp:192.168.0.82:5060'}}}, 'Size': 512}
As you can see,. there should be two records but only one is parsed.
Here is the response body from tcpdump
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><struct>
<member><name>Domain</name><value><string>location</string></value></member>
<member><name>Size</name><value><int>512</int></value></member>
<member>
<name>AoRs</name>
<value><struct>
<member><name>AoR</name><value><string>jkp-02</string></value></member>
<member><name>HashID</name><value><int>1731621670</int></value></member>
<member>
<name>Contacts</name>
<value><struct>
<member>
<name>Contact</name>
<value><struct>
<member><name>Address</name><value><string>
sip:jkp-02 at 192.168.0.214:35060</string></value></member>
<member><name>Expires</name><value><int>768</int></value></member>
<member><name>Q</name><value><double>0.000000</double></value></member>
<member><name>Call-ID</name><value><string>
rcilzqsjfpnuihl at vera.foo.com</string></value></member>
<member><name>CSeq</name><value><int>383</int></value></member>
<member><name>User-Agent</name><value><string>Twinkle/1.4.2</string></value></member>
<member><name>Received</name><value><string>[not
set]</string></value></member>
<member><name>Path</name><value><string>[not
set]</string></value></member>
<member><name>State</name><value><string>CS_SYNC</string></value></member>
<member><name>Flags</name><value><int>0</int></value></member>
<member><name>CFlags</name><value><int>0</int></value></member>
<member><name>Socket</name><value><string>udp:
192.168.0.82:5060</string></value></member>
<member><name>Methods</name><value><int>6111</int></value></member>
<member><name>Ruid</name><value><string>uloc-50a0ea3c-124c0-1</string></value></member>
<member><name>Instance</name><value><string>[not
set]</string></value></member>
<member><name>Reg-Id</name><value><int>0</int></value></member>
</struct></value>
</member>
</struct></value>
</member>
<member>
<name>AoR</name><value><string>jkp-01</string></value></member>
<member><name>HashID</name><value><int>1731621673</int></value></member>
<member>
<name>Contacts</name>
<value><struct>
<member>
<name>Contact</name>
<value><struct>
<member><name>Address</name><value><string>
sip:jkp-01 at 192.168.0.214:25060</string></value></member>
<member><name>Expires</name><value><int>185</int></value></member>
<member><name>Q</name><value><double>0.000000</double></value></member>
<member><name>Call-ID</name><value><string>61ac73a44826f3887a5db2371b044275 at 0
:0:0:0:0:0:0:0</string></value></member>
<member><name>CSeq</name><value><int>12</int></value></member>
<member><name>User-Agent</name><value><string>Jitsi1.0-Linux</string></value></member>
<member><name>Received</name><value><string>[not
set]</string></value></member>
<member><name>Path</name><value><string>[not
set]</string></value></member>
<member><name>State</name><value><string>CS_SYNC</string></value></member>
<member><name>Flags</name><value><int>0</int></value></member>
<member><name>CFlags</name><value><int>0</int></value></member>
<member><name>Socket</name><value><string>udp:
192.168.0.82:5060</string></value></member>
<member><name>Methods</name><value><int>18446744073709551615</int></value></member>
<member><name>Ruid</name><value><string>uloc-50a0ea3c-124bf-1</string></value></member>
<member><name>Instance</name><value><string>[not
set]</string></value></member>
<member><name>Reg-Id</name><value><int>0</int></value></member>
</struct></value>
</member>
</struct></value>
</member>
</struct></value>
</member>
<member>
<name>Stats</name>
<value><struct>
<member><name>Records</name><value><int>2</int></value></member>
<member><name>Max-Slots</name><value><int>1</int></value></member>
</struct></value>
</member>
</struct></value>
</param>
</params>
</methodResponse>
and for reference, the same command from kamctl:
[krsi at sipproxy1 ~]$ kamctl mi ul_dump
Domain:: location table=512 records=2 max_slot=1
AOR:: jkp-02
Contact:: sip:jkp-02 at 192.168.0.214:35060 Q=
Expires:: 1961
Callid:: rcilzqsjfpnuihl at vera.foo.se
Cseq:: 383
User-agent:: Twinkle/1.4.2
State:: CS_SYNC
Flags:: 0
Cflag:: 0
Socket:: udp:192.168.0.82:5060
Methods:: 6111
Ruid:: uloc-50a0ea3c-124c0-1
Reg-Id:: 0
AOR:: jkp-01
Contact:: sip:jkp-01 at 192.168.0.214:25060 Q=
Expires:: 298
Callid:: 61ac73a44826f3887a5db2371b044275 at 0
:0:0:0:0:0:0:0
Cseq:: 10
User-agent:: Jitsi1.0-Linux
State:: CS_SYNC
Flags:: 0
Cflag:: 0
Socket:: udp:192.168.0.82:5060
Methods:: 4294967295
Ruid:: uloc-50a0ea3c-124bf-1
Reg-Id:: 0
Thanks
./Kristofer
> For example, siremis uses the xmlrpc interface and all is ok with handling
> the replies. It uses a library from php pear.
>
> Cheers,
> Daniel
>
> --
> Daniel-Constantin Mierla - http://www.asipto.com
> http://twitter.com/#!/miconda - http://www.linkedin.com/in/**miconda<http://www.linkedin.com/in/miconda>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20121112/68e5dd56/attachment-0001.htm>
More information about the sr-users
mailing list