<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    the patch cannot be applied as it is. The comments contain
    references to request processing, which is obviously wrong. Then I
    have seen code specific to requests, like managing the request uri
    or dst uri -- these fields shouldn't be set for replies, it's ok as
    safety to clear them up, but not cloning.<br>
    <br>
    From the patch I see the new function are only for internal usage,
    not for config file. Are they supposed to be used only in the
    transaction context (i.e., after the transaction is matched for
    reply)?<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <br>
    <div class="moz-cite-prefix">On 7/4/13 5:24 PM, Richard Good wrote:<br>
    </div>
    <blockquote
cite="mid:CAOvD117BwLZyAJtsuwYDHU9iwoJGx7cMbf9f06T5Qh_qXrFbPQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>
                <div>
                  <div>
                    <div>
                      <div>Hi<br>
                        <br>
                      </div>
                      I've finally got working functionality for
                      t-suspend and t_continue for SIP responses in the
                      tmp/tm_async_reply_support branch.<br>
                      <br>
                    </div>
                    I've memory and load tested the branch and have also
                    isolated the changes so that if there are problems
                    they will only be experienced if you use the new API
                    functions.<br>
                    <br>
                  </div>
                  However keeping mind that TM can be tricky to program
                  (as mentioned in the documentation ;)) - I've included
                  below a summary of the changes and a git diff against
                  the latest master.  So the TM experts can have a look
                  and see if there are any obvious problems. <br>
                  <br>
                  If there are no complaints or queries I will commit
                  the changes to master next week Friday (July 12).<br>
                  <br>
                </div>
                <div>Regards<br>
                  Richard.<br>
                </div>
                <div><br>
                </div>
                Change summary:<br>
                1.  parser/msg_parser.h:  added new message state
                FL_RPL_SUSPENDED<br>
              </div>
              2.  tm_load.c: new api functions: <b>t_suspend_reply</b>,
              <b>t_continue_reply</b> and <b>t_cancel_suspend_reply</b><br>
              3.  t_suspend.c/h: new methods: <b>t_suspend_reply</b>, <b>t_continue_reply</b>
              and <b>t_cancel_suspend_reply<br>
              </b>4.  tm/t_reply.c: if msg is in state FL_RPL_SUSPENDED
              then we skip sending the <span class="">reply</span> on<br>
            </div>
            5.  tm/t_reply.c/h: new methods to fake env for responses: <b>faked_env_resp,
              faked_resp, free_faked_resp<br>
            </b></div>
          6.  API documentation to include new functions: <b>t_suspend_reply</b>,
          <b>t_continue_reply</b> and <b>t_cancel_suspend_reply<br>
            <br>
          </b></div>
        <b><br>
        </b>
        <div>
          <div>
            <div>
              <div><b><br>
                </b>
                <div><br>
                  <div>
                    <div><br>
                      <br>
                      <div>
                        <div>
                          <div>
                            <div class="gmail_extra"><br>
                              <br>
                              <div class="gmail_quote">On 18 March 2013
                                14:13, Richard Good <span dir="ltr"><<a
                                    moz-do-not-send="true"
                                    href="mailto:richard.good@smilecoms.com"
                                    target="_blank">richard.good@smilecoms.com</a>></span>
                                wrote:<br>
                                <blockquote class="gmail_quote"
                                  style="margin:0px 0px 0px
                                  0.8ex;border-left:1px solid
                                  rgb(204,204,204);padding-left:1ex">Hi
                                  Daniel and other TM experts<br>
                                  <br>
                                  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)<br>
                                  <br>
                                  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.<br>
                                  <br>
                                  The changes we have done:<br>
                                  <ol>
                                    <li>parser/msg_parser.h:  added new
                                      message state FL_RPL_SUSPENDED</li>
                                    <li>tm/h_table.h: added int
                                      suspended_request to ua_server and
                                      int suspended_reply to ua_client</li>
                                    <li>tm/t_suspend.c:t_suspend</li>
                                    <ol>
                                      <li>Changed suspend method to
                                        check if the message is a
                                        request or response and set the
                                        suspended_request/suspended_reply
                                        variable accordingly</li>
                                      <li>If its a request we do as the
                                        existing code<br>
                                      </li>
                                      <li>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</li>
                                    </ol>
                                    <li>tm/t_reply.c: if msg is in state
                                      FL_RPL_SUSPENDED then we skip
                                      sending the reply on<br>
                                    </li>
                                    <li>tm/t_suspend.c:t_continue</li>
                                    <ol>
                                      <li>Check if this uas was
                                        suspended - if so this is a
                                        continue for a request so
                                        continue with existing code<br>
                                      </li>
                                      <li>If not then we search for the
                                        branch that was suspended</li>
                                      <li>Once branch is found unsuspend
                                        the message state</li>
                                      <li>do pre-script, run_top_route
                                        and post scripts</li>
                                      <li>Relay the reply using
                                        basically the same code we
                                        skipped in step 4</li>
                                    </ol>
                                  </ol>
                                  <p>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.</p>
                                  <p>Any comments/feedback would be
                                    appreciated.  <br>
                                  </p>
                                  <p>Regards</p>
                                  <span><font color="#888888">
                                      <p>Richard.<br>
                                      </p>
                                    </font></span>
                                  <div>
                                    <div>
                                      <p><br>
                                      </p>
                                      <p><br>
                                      </p>
                                      <br>
                                      <br>
                                      <br>
                                      <br>
                                      <div class="gmail_quote">On 11
                                        March 2013 14:34,
                                        Daniel-Constantin Mierla <span
                                          dir="ltr"><<a
                                            moz-do-not-send="true"
                                            href="mailto:miconda@gmail.com"
                                            target="_blank">miconda@gmail.com</a>></span>
                                        wrote:<br>
                                        <blockquote class="gmail_quote"
                                          style="margin:0px 0px 0px
                                          0.8ex;border-left:1px solid
                                          rgb(204,204,204);padding-left:1ex">
                                          <div text="#000000"
                                            bgcolor="#FFFFFF"> Hello,<br>
                                            <br>
                                            t_suspend() and t_continue()
                                            are only for requests at
                                            this moment.<br>
                                            <br>
                                            Cheers,<br>
                                            Daniel
                                            <div>
                                              <div><br>
                                                <br>
                                                <div>On 3/6/13 2:49 PM,
                                                  Richard Good wrote:<br>
                                                </div>
                                              </div>
                                            </div>
                                            <blockquote type="cite">
                                              <div>
                                                <div>Hi<br>
                                                  <br>
                                                  We are using the
                                                  t_suspend and
                                                  t_continue
                                                  functionality to
                                                  asynchronously send
                                                  Diameter messages.  <br>
                                                  <br>
                                                  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.<br>
                                                  <br>
                                                  I have found that the
                                                  SIP responses continue
                                                  to be relayed despite
                                                  being suspended and
                                                  returning 0 to the cfg
                                                  file.<br>
                                                  <br>
                                                  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?<br>
                                                  <br>
                                                  Regards<br>
                                                  Richard.
                                                  <table
                                                    style="width:450pt"
                                                    border="0"
                                                    cellpadding="0"
                                                    cellspacing="0"
                                                    width="600">
                                                    <tbody>
                                                      <tr
                                                        style="min-height:10.5pt">
                                                        <td rowspan="3"
style="width:173.25pt;padding:0cm;min-height:10.5pt" valign="top"
                                                          width="231"> <br>
                                                        </td>
                                                        <td
                                                          style="padding:0cm;min-height:10.5pt"
                                                          valign="top"><br>
                                                        </td>
                                                      </tr>
                                                      <tr
                                                        style="min-height:42.75pt">
                                                        <td
                                                          style="padding:0cm;min-height:42.75pt"
                                                          valign="top"><br>
                                                        </td>
                                                      </tr>
                                                    </tbody>
                                                  </table>
                                                  <span
style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"></span>
                                                </div>
                                              </div>
                                              <pre>This email is subject to the disclaimer of Smile Communications (PTY) Ltd. at <a moz-do-not-send="true" href="http://www.smilecoms.com/disclaimer" target="_blank">http://www.smilecoms.com/disclaimer</a>


<fieldset></fieldset>
<pre>_______________________________________________
sr-dev mailing list
<a moz-do-not-send="true" href="mailto:sr-dev@lists.sip-router.org" target="_blank">sr-dev@lists.sip-router.org</a>
<a moz-do-not-send="true" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a>
</pre>

</pre>
                                              <span><font
                                                  color="#888888"> </font></span></blockquote>
                                            <span><font color="#888888">
                                                <br>
                                                <pre cols="72">-- 
Daniel-Constantin Mierla - <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a moz-do-not-send="true" href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Kamailio World Conference, April 16-17, 2013, Berlin
 - <a moz-do-not-send="true" href="http://conference.kamailio.com" target="_blank">http://conference.kamailio.com</a> -</pre>
                                              </font></span></div>
                                          <br>
_______________________________________________<br>
                                          sr-dev mailing list<br>
                                          <a moz-do-not-send="true"
                                            href="mailto:sr-dev@lists.sip-router.org"
                                            target="_blank">sr-dev@lists.sip-router.org</a><br>
                                          <a moz-do-not-send="true"
                                            href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev"
                                            target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
                                          <br>
                                        </blockquote>
                                      </div>
                                      <table style="width:450pt"
                                        border="0" cellpadding="0"
                                        cellspacing="0" width="600">
                                        <tbody>
                                          <tr style="min-height:10.5pt">
                                            <td rowspan="3"
                                              style="width:173.25pt;padding:0cm;min-height:10.5pt"
                                              valign="top" width="231">
                                              <br>
                                            </td>
                                            <td
                                              style="padding:0cm;min-height:10.5pt"
                                              valign="top"><br>
                                            </td>
                                          </tr>
                                          <tr style="min-height:42.75pt">
                                            <td
                                              style="padding:0cm;min-height:42.75pt"
                                              valign="top"><br>
                                            </td>
                                          </tr>
                                        </tbody>
                                      </table>
                                      <span
style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"></span></div>
                                  </div>
                                </blockquote>
                              </div>
                              <br>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <pre>This email is subject to the disclaimer of Smile Communications at <a class="moz-txt-link-freetext" href="http://www.smilecoms.com/disclaimer">http://www.smilecoms.com/disclaimer</a>



</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
</pre>
  </body>
</html>