[SR-Users] No cdr after Kamailio 5.0 restart

Diego Nadares dnadares at gmail.com
Tue Mar 21 14:05:17 CET 2017


Hi Daniel,

I'm sorry. I don't know how to make a pull request. I can google a howto
but maybe anyone here has one.

Thanks.

Diego

2017-03-21 9:32 GMT-03:00 Daniel-Constantin Mierla <miconda at gmail.com>:

> 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>
>
> _______________________________________________
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20170321/a038f54d/attachment.html>


More information about the sr-users mailing list