[SR-Users] RPC command dlg.list (for large amounts of dialogs)
Alex Balashov
abalashov at evaristesys.com
Wed Aug 14 14:41:38 CEST 2013
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/
More information about the sr-users
mailing list