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

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


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
>>>       
>
>
>
>   

-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.tgz
Type: application/x-compressed
Size: 650 bytes
Desc: patch.tgz
Url : http://lists.opensips.org/pipermail/devel/attachments/20090402/d8fe8140/attachment-0001.bin 


More information about the Devel mailing list