[SR-Users] RPC command dlg.list (for large amounts of dialogs)
Olle E. Johansson
oej at edvina.net
Mon Sep 2 09:19:13 CEST 2013
At some point we need a framed protocol for this kind of lists. Kamailio builds it in memory before sending. We do need something that sends out chunks.
/O
14 aug 2013 kl. 14:41 skrev Alex Balashov <abalashov at evaristesys.com>:
> By the way, I have not tried connecting to the binrpc interface via network socket and retrieving the output that way. I am only trying to connect to it via the 'kamcmd' utility via the default UNIX domain socket.
>
> On 08/14/2013 08:37 AM, Alex Balashov wrote:
>
>> Hello,
>>
>> I am having trouble getting a large list of dialogs (800+) out of
>> Kamailio using the dlg.list binrpc command.
>>
>> I posted a while back that the list of dialog data was coming back
>> truncated, and was told to increase:
>>
>> modparam("ctl", "binrpc_max_body_size", ...)
>> modparam("ctl", "binrpc_struct_max_body_size", ...)
>>
>> I did that, increasing the buffers to 20 MB. Then, when I ran
>>
>> sercmd -s unixs:/tmp/kamailio_ctl dlg.list
>>
>> I got:
>>
>> ERROR: reply too big
>>
>> which clearly seemed to be on the client side now.
>>
>> So, I looked in the sources for sercmd (now sercmd), in
>> sip-router/utils/sercmd/sercmd.c, and found this:
>>
>> if ((ret=get_reply(s, reply_buf, MAX_REPLY_SIZE, cookie, &in_pkt,
>> &msg_body))<0){
>> switch(ret){
>> case -1:
>> goto error_read;
>> case -2:
>> goto error_parse;
>> case -3:
>> goto error_cookie;
>> case -4:
>> goto error_toobig;
>>
>> So, I adjusted:
>>
>> #define MAX_REPLY_SIZE
>>
>> to several megabytes as well, and tried the same with MAX_BODY_SIZE too.
>>
>> Now, when I run the dlg.list command, it just hangs and never returns
>> anything. It was stuck there for well over 20 minutes. An 'strace' on
>> sercmd reveals that it receives what appears to be the full listing, but
>> keeps wanting to read() more. I don't have the exact output handy at
>> the moment, but it looked like this:
>>
>> socket(PF_FILE, SOCK_STREAM, 0) = 3
>> connect(3, {sa_family=AF_FILE, path="/tmp/kamailio_ctl"}, 110) = 0
>> writev(3, [{"\241\3\v%s\230\4", 7}, {"\221\tdlg.list\0", 11}], 2) = 18
>> read(3, "\241\27\16\257%s\230\4\221Hhash:551:9521 state:4 "...,
>> 786432) = 340000
>> read(3,
>> [just hangs here]
>>
>> Now, I would have assumed that perhaps there is more to read and the
>> output is not returning due to some endless locking of the dialog
>> profile table, which is constantly changing. However, that cannot be
>> the case because
>>
>> kamctl fifo dlg_list
>>
>> works fine for any amount of dialogs, and always returns all the data
>> near-instantly!
>>
>> Any assistance is much appreciated!
>>
>> -- Alex
>>
>> [1] I don't have the output handy at the moment, but it was a read() value:
>>
>
>
> --
> Alex Balashov - Principal
> Evariste Systems LLC
> 235 E Ponce de Leon Ave
> Suite 106
> Decatur, GA 30030
> United States
> Tel: +1-678-954-0670
> Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
---
* Olle E Johansson - oej at edvina.net
* Cell phone +46 70 593 68 51, Office +46 8 96 40 20, Sweden
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130902/8b76e3c9/attachment-0001.html>
More information about the sr-users
mailing list