[Devel] session termination

JF jfkavaka at gmail.com
Tue Dec 6 20:53:04 CET 2005


Hi Bogdan,

Thank you for that. I managed to add a t_cancel function to tm api,
but now I realize that in tm/dlg.c the code to create EARLY dialogs is
missing in new_dlg_uas() (only 2xx replies are handled, creating
CONFIRMED dialogs). To clarify, I'm using new_dlg_uas() via tm api to
create this dlg structure from within a TMCB_RESPONSE_IN callback
within this new "dialog management" module.

Now, according to RFC 3261, on section 13.2.2.1:
"If a provisional response has a tag in the To field, and if the
dialog ID of the response does not match an existing dialog, one is
constructed"

So first a check must be done for To tag presence, then try to find a
dialog (by ID) in the dialog table the module maintains.
So I would have to change new_dlg_uas() to create EARLY dialogs also
and only call it if previous checks pass.

Does this seem reasonable? Could you (or the other core developers)
provide some guidance here? I have read somewhere in the list that
there were plans to implement a similar module...

JF

On 12/6/05, Bogdan-Andrei Iancu <bogdan at voice-system.ro> wrote:
> Hi,
>
> The TM API does not export any cancel function right now. Instead there
> is a FIFO function for generating cancels: t_uac_cancel (see
> modules/tm/tm.c +553) . maybe this will help you in adding an API function.
>
> regards,
> bogdan
>
> JF wrote:
>
> >Hi,
> >
> >I've been playing around with TM callbacks and the TM API trying to
> >build a module which mantains dialog info in order to permit session
> >termination. For now I managed (in a very experimental way) to have a
> >function exposed to the script which initiates (appropriately built
> >with dialog info) BYE transactions to UAs and effectively terminates
> >the call. Later this could be done via FIFO or unix socket command
> >taking some kind of "dialog identifier" parameter...
> >But sending BYEs to terminate calls only works if the dialog is
> >already in the CONFIRMED state.
> >For early dialogs, CANCELs should be used. But in the TM API there is
> >no cancel function. Is there any other way of canceling a request on
> >behalf of an UA from within an openser module? Or would the TM API
> >need to be extended?
> >
> >Thanks in advance for any insights.
> >
> >JF
> >
> >_______________________________________________
> >Devel mailing list
> >Devel at openser.org
> >http://openser.org/cgi-bin/mailman/listinfo/devel
> >
> >
> >
>
>



More information about the Devel mailing list