[OpenSIPS-Devel] R: R: call_control, dialog and BYE messages patch

Mauro Davi' mauro.davi at acotel.com
Thu Apr 2 11:15:55 CEST 2009


Hi All,

a brief point of view. It's true, how Dan said, that the call_control module don't have all the information to know at the time that the dialogs are 
loaded from the database, to which of them it needs to attach the callbacks.

But it is also true, that if I attach the callback to all the dialog, when the call_control module will receive a stop message, it simply can discard it responding with a "NOT FOUND" message from the rating engine.

I know that with a lot of call, not handled by the call control module, this isn't the best way but I think that, for me, is better to have the stop message on the call control module.

Regards,
	MD

-----Messaggio originale-----
Da: devel-bounces at lists.opensips.org [mailto:devel-bounces at lists.opensips.org] Per conto di Mauro Davi'
Inviato: giovedì 2 aprile 2009 11:04
A: Bogdan-Andrei Iancu; Dan Pascu
Cc: devel at lists.opensips.org
Oggetto: [OpenSIPS-Devel] R: call_control, dialog and BYE messages patch

Hi All,

attached the new call_control module patch using the DLBCB_LOADED callback type. Now it isn't necessary to modify the register_dlgcb  function in the dialog module

It works fine. The stop message of the current active dialog now arrives also after a server restart.

Regards,
    MD

-----Messaggio originale-----
Da: Bogdan-Andrei Iancu [mailto:bogdan at voice-system.ro] 
Inviato: martedì 31 marzo 2009 12:01
A: Dan Pascu
Cc: Mauro Davi'; devel at lists.opensips.org
Oggetto: Re: [OpenSIPS-Devel] call_control, dialog and BYE messages patch

Hi Dan,

Dan Pascu wrote:
> On Tuesday 31 March 2009, Bogdan-Andrei Iancu wrote:
>   
>> Hi Mauro,
>>
>> I think a better approach is to use the DLGCB_LOADED callback type.
>> This is called when a dialog is restored from DB (at startup) and it is
>> called per dialog. So the "callcontrol" module could register such
>> callback and use it to register further whatever other callbacks are
>> needed.
>>
>> Maybe Dan can help with this as he has a better inside view on the
>> module.
>>     
>
> Indeed. However the issue was (I'm not sure if it's still valid) that one 
> could not store particular information alongside the dialog in the 
> database. As a consequence, I do not know at the time the dialogs are 
> loaded from the database, to which of them I need to attach callbacks.
>   

right - this opens the discussion for another topic - a general way 
(kind of string of properties) to save all the various props of the 
dialog (profiles, dialog flags, dialog values, callbacks, etc). This to 
be saved only at shutdown time...

Regards,
Bogdan
>   
>> Regards,
>> Bogdan
>>
>> Mauro Davi' wrote:
>>     
>>> Hi All,
>>>
>>> using the callcontrol module I see that if the opensips server goes
>>> down, on the next start the BYE message aren't sent to the call
>>> control module (i.e. the stop message).
>>>
>>> Attached there is the dialog module patch.
>>>
>>> I modified the |register_dlgcb (dialog, type, cb, param,
>>> free_param_cb)| function in this way:
>>>
>>> If the dialog parameter is null and the type isn't equal to
>>> DIALOG_CREATED, the callback function is registered to all the active
>>> dialogs.
>>>
>>> So in the call control module, in the mod_init function I simply
>>> added this new lines:
>>>
>>> if (dlg_api.register_dlgcb(NULL, DLGCB_RESPONSE_FWDED,
>>> __dialog_replies, NULL, NULL) != 0) {
>>>
>>> LM_CRIT("cannot register callback for dialog confirmation\n");
>>>
>>> return -1;
>>>
>>> }
>>>
>>> if (dlg_api.register_dlgcb(NULL, DLGCB_TERMINATED | DLGCB_FAILED |
>>> DLGCB_EXPIRED | DLGCB_DESTROY, __dialog_ended, (void*)CCActive, NULL)
>>> != 0) {
>>>
>>> LM_CRIT("cannot register callback for dialog termination\n");
>>>
>>> return -1;
>>>
>>> }
>>>
>>> Now the BYE messages are sent to the call control module (stop
>>> messages) also if the opensips server is previously killed.
>>>
>>> I don't know if this is the best solution, but it is a solution J
>>>
>>> Regards,
>>>
>>> MD
>>>
>>> ---------------------------------------------------------------------
>>> ---
>>>
>>> _______________________________________________
>>> Devel mailing list
>>> Devel at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>>>       
>
>
>
>   




More information about the Devel mailing list