[OpenSIPS-Users] [NEW] Dialog data persistence across reboot

Thomas Gelf thomas at gelf.net
Mon Jun 8 21:50:21 CEST 2009


Hi Bogdan,

it took some time, but today I finally find some time to test this. As
mentioned on IRC it segfaults, here is the backtrace:

#0  0x000000000049eee4 in db_print_columns (
    _b=0x714974 "hash_entry,hash_id,callid,from_uri,from_tag,to_uri,
    to_tag,caller_sock,callee_sock,start_time,state,timeout,caller_cseq,
    callee_cseq,caller_route_set,callee_route_set,caller_contact,
    callee_contact,", _l=65516, _c=<value optimized out>, _n=21) at
    db/db_ut.c:222
#1  0x000000000049bc83 in db_do_insert (_h=0x781368, _k=0x7fffbb6b47c0,
    _v=0x7fffbb6b4520, _n=21, val2str=0x2af5f142def0 <db_mysql_val2str>,
    submit_query=<value optimized out>) at db/db_query.c:162
#2  0x00002af5f142b86f in db_mysql_insert (_h=0x781368,
    _k=0x7fffbb6b47c0,  _v=0x7fffbb6b4520, _n=21) at dbase.c:925
#3  0x00002af5f37d0fe8 in update_dialog_dbinfo (cell=0x2af5f53044d0) at
    dlg_db_handler.c:657
#4  0x00002af5f37d86da in dlg_onreply (t=0x2af5f5308b60, type=<value
    optimized out>, param=<value optimized out>) at dlg_handlers.c:325
#5  0x00002af5f03c7b68 in run_trans_callbacks (type=128,
    trans=0x2af5f5308b60, req=0x2af5f5304f30, rpl=0x7815b8, code=200)
    at t_hooks.c:208
#6  0x00002af5f03d96b3 in relay_reply (t=0x2af5f5308b60, p_msg=0x7815b8,
    branch=1, msg_status=200, cancel_bitmap=0x7fffbb6b4bb8) at
    t_reply.c:1226
#7  0x00002af5f03d9f4b in reply_received (p_msg=0x7815b8) at
    t_reply.c:1484
#8  0x000000000041cce0 in forward_reply (msg=0x7815b8) at forward.c:507
#9  0x00000000004426a8 in receive_msg (
    buf=0x7042e0 "SIP/2.0 200 OK\r\n"..., len=1131,
    rcv_info=0x7fffbb6b4cc0) at receive.c:203
#10 0x00000000004706fa in udp_rcv_loop () at udp_server.c:449
#11 0x00000000004227a2 in main (argc=<value optimized out>,
    argv=0x7fffbb6b4e98) at main.c:786

As you know I'm not a C-coder, but I tried to give it a quick look. The
problem here is the _n=21 (from DIALOG_TABLE_COL_NO, has former been 18
and is now 21). However, there are still only 18 values - vars, profiles
and script_flags are not set in update_dialog_dbinfo. I tried to replace
DIALOG_TABLE_COL_NO with "18" on line 657 in dlg_db_handler.c - prevents
segfaulting, but vars etc are (obviously?) not be stored to db.

Best regards,
Thomas Gelf


Bogdan-Andrei Iancu schrieb:
> Hi,
> 
> I added to the dialog module support for data persistence (dialog script 
> flags, dialog script variables, dialog profiles) across restart. As this 
> data is highly dynamic nature (may changes very often), it is flushed to 
> DB only at shutdown time - so do not expect to see it in DB during runtime.
> 
> This will directly affect the script functionality - you can rely on not 
> loosing the dialog context if rebooting, and also the module using 
> dialog module (like load-balancer which needs to keep the profiles in 
> order to do the job).
> 
> Regards,
> Bogdan




More information about the Users mailing list