[sr-dev] t_suspend and t_continue in tm module

Richard Good richard.good at smilecoms.com
Mon Mar 18 13:13:48 CET 2013


Hi Daniel and other TM experts

We have been working on a prototype for being able to use the t_suspend()
and t_continue() methods for SIP responses.  The version in branch
/tmp/tm_async_reply_support is working, though still needs to be 100%
tested and only works for 1 branch (i.e. no forking)**

Would it be possible for you to have a look at this branch code and see if
we are on the right track.  The code is working but TM (as mentioned in the
documentation ;)) can be tricky to program and we want to make sure we are
not breaking anything, as the goal is to get this into the master branch.

The changes we have done:

   1. parser/msg_parser.h:  added new message state FL_RPL_SUSPENDED
   2. tm/h_table.h: added int suspended_request to ua_server and int
   suspended_reply to ua_client
   3. tm/t_suspend.c:t_suspend
      1. Changed suspend method to check if the message is a request or
      response and set the suspended_request/suspended_reply variable
accordingly
      2. If its a request we do as the existing code
      3. If its a response we get the correct uac branch, clone the msg
      into t->uac[branch].reply and set the msg state to FL_RPL_SUSPENDED
   4. tm/t_reply.c: if msg is in state FL_RPL_SUSPENDED then we skip
   sending the reply on
   5. tm/t_suspend.c:t_continue
      1. Check if this uas was suspended - if so this is a continue for a
      request so continue with existing code
      2. If not then we search for the branch that was suspended
      3. Once branch is found unsuspend the message state
      4. do pre-script, run_top_route and post scripts
      5. Relay the reply using basically the same code we skipped in step 4

First next step after we confirm we are on the right track is to add
forking support - this will require a new t_continue method where the
calling application passes in the branch of the suspended reply when
wanting to continue.

Any comments/feedback would be appreciated.

Regards

Richard.







On 11 March 2013 14:34, Daniel-Constantin Mierla <miconda at gmail.com> wrote:

>  Hello,
>
> t_suspend() and t_continue() are only for requests at this moment.
>
> Cheers,
> Daniel
>
>
> On 3/6/13 2:49 PM, Richard Good wrote:
>
> Hi
>
> We are using the t_suspend and t_continue functionality to asynchronously
> send Diameter messages.
>
> This works nicely when we suspend and resume on a SIP request.  However in
> some circumstances we want to send a Diameter message on a SIP response.
>
> I have found that the SIP responses continue to be relayed despite being
> suspended and returning 0 to the cfg file.
>
> I am investigating the cause but before I get any deeper does anyone know
> if the t_suspend and t_continue functionality in the tm module can be used
> on a SIP response?
>
> Regards
> Richard.
>
>
>    This email is subject to the disclaimer of Smile Communications (PTY) Ltd. at http://www.smilecoms.com/disclaimer
>
> _______________________________________________
> sr-dev mailing listsr-dev at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
> --
> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio World Conference, April 16-17, 2013, Berlin
>  - http://conference.kamailio.com -
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>

This email is subject to the disclaimer of Smile Communications (PTY) Ltd. at http://www.smilecoms.com/disclaimer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20130318/3838f2f7/attachment.htm>


More information about the sr-dev mailing list