<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    is still work on this patch on personal branches? I have seen Jason
    committing stuff, although some patched seemed to be to sip request
    suspend/continue.<br>
    <br>
    Also, for review, would be good to have a single patch generated
    (diff between the branches), because is hard to follow with patches
    to patches.<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <br>
    <div class="moz-cite-prefix">On 7/8/13 12:38 PM, Richard Good wrote:<br>
    </div>
    <blockquote
cite="mid:CAOvD114ah39MtgmarNrNFP6Q-CEoq0WYzqABggz=Hf6cS7+_ww@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><span style="color:rgb(0,0,255)"><span
              style="background-color:rgb(255,255,255)">Hi <br>
              <br>
              Thanks very much for the quick feedback.  My comments
              inline.</span></span><br>
          <br>
          <span style="color:rgb(0,0,255)"><span
              style="background-color:rgb(255,255,255)"></span></span><span
            style="color:rgb(0,0,255)"><span
              style="background-color:rgb(255,255,255)">Regards<br>
              Richard.</span></span><br>
        </div>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On 6 July 2013 19:48,
            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 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>
              </div>
            </blockquote>
            <div><span style="color:rgb(0,0,255)"><span
                  style="background-color:rgb(255,255,255)"><br>
                  I've gone through the code (and comments) in detail
                  and removed all incorrect references to request code. 
                  I've also removed the dst/request URI management from
                  the faked_resp method.  Attached is the patch for
                  these changes.</span></span><br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000"> <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>
              </div>
            </blockquote>
            <div> <br>
            </div>
            <div><span style="color:rgb(0,0,255)"><span
                  style="background-color:rgb(255,255,255)">This patch
                  closely follows the pattern of the t_suspend(),
                  t_continue() functions that are for programmatic use
                  only.  We use the t_suspend_reply() and
                  t_continue_reply() functions in the ims_qos module so
                  did not need to expose it to the config file.<br>
                </span></span><span style="color:rgb(0,0,255)"><span
                  style="background-color:rgb(255,255,255)"><br>
                </span></span></div>
            <div><span style="color:rgb(0,0,255)"><span
                  style="background-color:rgb(255,255,255)">I suppose
                  the suspend functionality for requests and responses
                  could be exposed to the config file if required - but
                  it has not been done in this patch.<br>
                </span></span></div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000"> <br>
                Cheers,<br>
                Daniel
                <div>
                  <div class="h5"><br>
                    <br>
                    <div>On 7/4/13 5:24 PM, Richard Good wrote:<br>
                    </div>
                  </div>
                </div>
                <blockquote type="cite">
                  <div>
                    <div class="h5">
                      <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>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>
                    </div>
                  </div>
                  <pre>This email is subject to the disclaimer of Smile Communications at <a moz-do-not-send="true" href="http://www.smilecoms.com/disclaimer" target="_blank">http://www.smilecoms.com/disclaimer</a>



</pre>
                </blockquote>
                <div class="im"> <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>
</pre>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </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>