[SR-Users] No cdr after Kamailio 5.0 restart

Daniel-Constantin Mierla miconda at gmail.com
Tue Mar 21 13:32:06 CET 2017


If you want to propose a patch to be merged into Kamailio, do a pull
request via github.com/kamailio/kamailio -- it makes it easier to review as
well as have the patch compiled by Travic CI before merging, so we can spot
the basic conflicts if any. The patch has to be for master branch, to be
merged directly.

On Mon, Mar 20, 2017 at 8:40 PM, Diego Nadares <dnadares at gmail.com> wrote:

> I didn't mention that I did this on kamailio 4.4.
>
> Cheers,
>
> Diego
>
> 2017-03-20 16:38 GMT-03:00 Diego Nadares <dnadares at gmail.com>:
>
>> Hi Lucian,
>>
>> I made a few changes like you and I think it's working. Loads dialogs and
>> generate cdr. It needs more testing. The function  cdr_on_load it's copy
>> and paste to avoid touching those params in on_create. A lot of improve is
>> needed.
>>
>> diff --git a/modules/dialog/dialog.c b/modules/dialog/*dialog.c*
>> index ceaf08a..59210e8 100644
>> --- a/modules/dialog/dialog.c
>> +++ b/modules/dialog/dialog.c
>> @@ -692,7 +692,7 @@ static int mod_init(void)
>>                         LM_ERR("failed to initialize the DB support\n");
>>                         return -1;
>>                 }
>> -               run_load_callbacks();
>> +               //run_load_callbacks();
>>         }
>>
>>         destroy_dlg_callbacks( DLGCB_LOADED );
>>
>> ########
>>
>> diff --git a/modules/dialog/dlg_db_handler.c b/modules/dialog/
>> *dlg_db_handler.c*
>> index e27f8b2..22d0f04 100644
>> --- a/modules/dialog/dlg_db_handler.c
>> +++ b/modules/dialog/dlg_db_handler.c
>> @@ -173,6 +173,7 @@ int init_dlg_db(const str *db_url, int dlg_hash_size
>> , int db_update_period, int
>>                         LM_ERR("unable to load the dialog data\n");
>>                         return -1;
>>                 }
>> +               run_load_callbacks();
>>         }
>>         dialog_dbf.close(dialog_db_handle);
>>         dialog_db_handle = 0;
>>
>>
>> ########
>>
>> diff --git a/modules/acc/acc_cdr.c b/modules/acc/*acc_cdr.c*
>> index 73bdd45..81ad640 100644
>> --- a/modules/acc/acc_cdr.c
>> +++ b/modules/acc/acc_cdr.c
>> @@ -733,11 +733,79 @@ static void cdr_on_destroy( struct dlg_cell* dialog,
>>      LM_DBG("dialog '%p' destroyed!\n", dialog);
>>  }
>>
>> +/* callback for loading a dialog from db. */
>> +static void cdr_on_load( struct dlg_cell* dialog,
>> +                           int type,
>> +                           struct dlg_cb_params* params)
>> +{
>> +
>> +    LM_ERR("ON LOAD\n");
>> +    if( !dialog)
>> +    {
>> +        LM_ERR( "invalid dialog\n!");
>> +        return;
>> +    }
>> +
>> +    if( cdr_enable == 0)
>> +    {
>> +        return;
>> +    }
>> +
>> +    if( dlgb.register_dlgcb( dialog, DLGCB_CONFIRMED, cdr_on_start, 0,
>> 0) != 0)
>> +    {
>> +        LM_ERR("can't register create dialog CONFIRM callback\n");
>> +       return;
>> +    }
>> +
>> +    if(_acc_cdr_on_failed==1) {
>> +           if( dlgb.register_dlgcb( dialog, DLGCB_FAILED, cdr_on_failed,
>> 0, 0) != 0)
>> +           {
>> +                   LM_ERR("can't register create dialog FAILED
>> callback\n");
>> +                   return;
>> +           }
>> +    }
>> +
>> +    if( dlgb.register_dlgcb( dialog, DLGCB_TERMINATED, cdr_on_end, 0, 0)
>> != 0)
>> +    {
>> +        LM_ERR("can't register create dialog TERMINATED callback\n");
>> +        return;
>> +    }
>> +
>> +    if( dlgb.register_dlgcb( dialog, DLGCB_TERMINATED_CONFIRMED,
>> cdr_on_end_confirmed, 0, 0) != 0)
>> +    {
>> +        LM_ERR("can't register create dialog TERMINATED CONFIRMED
>> callback\n");
>> +        return;
>> +    }
>> +
>> +    if( dlgb.register_dlgcb( dialog, DLGCB_EXPIRED, cdr_on_expired, 0,
>> 0) != 0)
>> +    {
>> +        LM_ERR("can't register create dialog EXPIRED callback\n");
>> +        return;
>> +    }
>> +
>> +    if( dlgb.register_dlgcb( dialog, DLGCB_DESTROY, cdr_on_destroy, 0,
>> 0) != 0)
>> +    {
>> +        LM_ERR("can't register create dialog DESTROY callback\n");
>> +        return;
>> +    }
>> +
>> +    LM_DBG("dialog '%p' created!", dialog);
>> +
>> +    if( set_start_time( dialog) != 0)
>> +    {
>> +        LM_ERR( "failed to set start time");
>> +        return;
>> +    }
>> +}
>> +
>> +
>>  /* callback for the creation of a dialog. */
>>  static void cdr_on_create( struct dlg_cell* dialog,
>>                             int type,
>>                             struct dlg_cb_params* params)
>>  {
>> +
>> +    LM_ERR("ON CREATE\n");
>>      if( !dialog || !params || !params->req)
>>      {
>>          LM_ERR( "invalid values\n!");
>> @@ -852,13 +920,19 @@ int init_cdr_generation( void)
>>          LM_ERR("can't load dialog API\n");
>>          return -1;
>>      }
>> -
>> -    if( dlgb.register_dlgcb( 0, DLGCB_CREATED, cdr_on_create, 0, 0) != 0)
>> +    //Loaded from db
>> +    if( dlgb.register_dlgcb( 0, DLGCB_LOADED, cdr_on_load, 0, 0) != 0)
>>      {
>>          LM_ERR("can't register create callback\n");
>>          return -1;
>>      }
>>
>> +    if( dlgb.register_dlgcb( 0, DLGCB_CREATED, cdr_on_create, 0, 0) != 0)
>> +    {
>> +       LM_ERR("can't register create callback\n");
>> +       return -1;
>> +    }
>> +
>>      return 0;
>>  }
>>
>>
>>
>>     if( cdr_enable == 0)
>>     {
>>         return;
>>     }
>>
>>     if( dlgb.register_dlgcb( dialog, DLGCB_CONFIRMED, cdr_on_start, 0, 0)
>> != 0)
>>     {
>>         LM_ERR("can't register create dialog CONFIRM callback\n");
>>         return;
>>     }
>>
>>
>>
>> Diego.
>>
>>
>>
>> 2017-03-20 10:06 GMT-03:00 Kordován Szabolcs <koszab at gmail.com>:
>>
>>> Hi All,
>>>
>>> I have tired your patch but it dosen't work. No any changes. :(
>>>
>>> Regards,
>>> Szabolcs
>>>
>>> 2017-03-16 15:36 GMT+01:00 Lucian Balaceanu <lucian.balaceanu at 1and1.ro>:
>>>
>>>> Hello all,
>>>>
>>>> Just created the pull request: https://github.com/kamailio/ka
>>>> mailio/pull/1036 in relation to this problem with the sketch of a
>>>> solution.
>>>>
>>>> Any input is appreciated,
>>>> Lucian
>>>>
>>>>
>>>> On 15.03.2017 15:17, Daniel-Constantin Mierla wrote:
>>>>
>>>> Hello,
>>>>
>>>> ok, good to know is someone tackling it.
>>>>
>>>> Thanks,
>>>> Daniel
>>>>
>>>> On 15/03/2017 12:14, Pawel Kuzak wrote:
>>>>
>>>> Hello,
>>>>
>>>> This indeed is a bug we've also spotted. It is not only present in 5.0.
>>>> It seems the *run_create_callbacks()* function which triggers the
>>>> *DLGCB_CREATED* callbacks to be executed is not called for dialogs
>>>> created from database. We are already working on a fix and are currently
>>>> testing it. We will try push it upstream as soon as possible. We will
>>>> answer on this thread when a fix is upstream.
>>>>
>>>> Regards,
>>>> Paul
>>>>
>>>> Am 14.03.2017 um 22:00 schrieb Kordován Szabolcs:
>>>>
>>>> Hello Daniel,
>>>>
>>>> Sorry for my reply, I didn't receive your mail.
>>>> So, only the active calls are affected. The new call, from invite to
>>>> bye-ok, is recorded into table acc and acc_cdrs.
>>>>
>>>> Regards,
>>>> Szabolcs
>>>>
>>>> 2017-03-14 11:13 GMT+01:00 Kordován Szabolcs <koszab at gmail.com>:
>>>>
>>>>> Hi,
>>>>>
>>>>> I use acc module for create cdr into db and also make acc log into db.
>>>>> After restart Kamailio cdr won't be created but acc log will be
>>>>> inserted into db. In the syslog also I see just the acc log. The dialog
>>>>> will be remove from db.
>>>>>
>>>>> I have read many threads. I know that it should work.
>>>>>
>>>>> Thanks for help!
>>>>> Regards,
>>>>> Szabolcs
>>>>>
>>>>> From my configs:
>>>>>
>>>>> #!define FLT_ACC 1
>>>>> #!define FLT_ACCMISSED 2
>>>>> #!define FLT_ACCFAILED 3
>>>>>
>>>>> modparam("acc", "db_url", DBURL)
>>>>> modparam("acc", "db_flag", FLT_ACC)
>>>>> modparam("acc", "db_missed_flag", FLT_ACCMISSED)
>>>>> modparam("acc", "db_extra", "src_user=$fU;src_domain=$fd;d
>>>>> st_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")
>>>>>
>>>>> modparam("acc", "log_level", 3)
>>>>> modparam("acc", "log_flag", FLT_ACC)
>>>>> modparam("acc", "log_missed_flag", FLT_ACCMISSED)
>>>>>
>>>>> modparam("acc", "report_ack", 1)
>>>>> modparam("acc", "report_cancels", 1)
>>>>> modparam("acc", "early_media", 1)
>>>>>
>>>>> modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)
>>>>>
>>>>> modparam("acc", "acc_prepare_always", 1)
>>>>> modparam("acc", "time_mode", 1)
>>>>> modparam("acc", "time_attr", "seconds")
>>>>> modparam("acc", "time_exten", "microsecs")
>>>>> modparam("acc", "reason_from_hf", 1)
>>>>>
>>>>> modparam("acc", "cdr_enable", 1)
>>>>> modparam("acc", "cdr_expired_dlg_enable", 1)
>>>>> modparam("acc", "cdr_start_on_confirmed", 1)
>>>>> modparam("acc", "cdrs_table", "acc_cdrs")
>>>>> modparam("acc", "cdr_on_failed", 1)
>>>>> modparam("acc", "cdr_extra", "callid=$ci;src_user=$dlg_var(
>>>>> fU);src_domain=$dlg_var(fd);dst_ouser=$dlg_var(tU);dst_user=
>>>>> $dlg_var(rU);dst_domain=$dlg_var(rd);src_ip=$dlg_var(si);pee
>>>>> r_in=$dlg_var(peerin);peer_out=$dlg_var(peerout)")
>>>>>
>>>>> request_route {
>>>>> <------>
>>>>> <------>$var(loose) = loose_route();
>>>>> <------>$var(check_trans) = t_check_trans();
>>>>> <------>sip_trace();
>>>>> <------>setflag(FLT_SIPTRACE);
>>>>> <------>dlg_manage();
>>>>>
>>>>> <------># handle retransmissions
>>>>> <------>if(t_precheck_trans()) {
>>>>> <------>    xlogl("LOG_LOCAL0", "L_ALERT", "================== kamaty
>>>>> $rm route $ci ==== $rm ==== precheck_trans exit\n");
>>>>> <------>    exit;
>>>>> <------>}
>>>>>
>>>>> <------>if(is_method("OPTIONS")) {.
>>>>> <------>    # send reply for each options request.
>>>>> <------>    sl_send_reply("200", "ok");.
>>>>> <------>    exit();.
>>>>> <------>}
>>>>> <------># CANCEL processing
>>>>> <------>if (is_method("CANCEL")) {
>>>>> <------><------>if (t_check_trans()) {
>>>>> <------><------>    route(RELAY);
>>>>> <------><------>}
>>>>> <------><------>exit;
>>>>> <------>}
>>>>> <------>if ( is_method("ACK") ) {
>>>>> <------><------>if ( $var(check_trans) ) {
>>>>> <------><------>    route(RELAY);
>>>>> <------><------>}
>>>>> <------><------>exit;
>>>>> <------>}
>>>>> <------>if (is_method("BYE")) {
>>>>> <------>    if ($var(loose)) {
>>>>> <------><------>setflag(FLT_ACC); # do accounting ...
>>>>> <------><------>setflag(FLT_ACCFAILED); # ... even if the transaction
>>>>> fails
>>>>> <------><------>setflag(FLT_ACCMISSED);
>>>>> <------><------>route(RELAY);
>>>>> <------>    <-->exit;
>>>>> <------>    }
>>>>> <------>    exit;
>>>>> <------>}
>>>>> etc.
>>>>>
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>> --
>>>> Daniel-Constantin Mierlawww.twitter.com/miconda -- www.linkedin.com/in/miconda
>>>> Kamailio Advanced Training - Mar 6-8 (Europe) and Mar 20-22 (USA) - www.asipto.com
>>>> Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>>
>>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>
>
> _______________________________________________
> 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
>
>


-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/micond
<http://www.linkedin.com/in/miconda>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20170321/889f05d1/attachment.html>


More information about the sr-users mailing list