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

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Mar 31 12:00:46 CEST 2009


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