<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    look also at core cookbook:<br>
    <br>
      - <a class="moz-txt-link-freetext" href="http://www.kamailio.org/wiki/cookbooks/devel/core">http://www.kamailio.org/wiki/cookbooks/devel/core</a><br>
    <br>
    More documentation is available at:<br>
    <br>
      - <a class="moz-txt-link-freetext" href="http://www.kamailio.org/w/documentation/">http://www.kamailio.org/w/documentation/</a><br>
    <br>
    SER Getting Started is old, but still useful to read. Other
    commercial books can be found out there.<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <br>
    <div class="moz-cite-prefix">On 04/02/15 21:57, Ryan Brindley wrote:<br>
    </div>
    <blockquote
cite="mid:CAPW0XzqYoby122dA=rE_eFDTJRXEjG=mbGgp59iXo6RC53agXQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hey Daniel,
        <div><br>
        </div>
        <div>Thanks for the reply and pointers on what I'm doing wrong.
          I'll look into the branch_failure_route and read the docs
          again to make sure I do serial forking and not accidentally
          creating a parallel fork.</div>
        <div><br>
        </div>
        <div>Does there happen to be any good resources (blog posts,
          wiki articles, books, ancient Egyptian hieroglyphics) on
          better understanding the handling of requests/responses in
          Kamailio? Or are the module docs the best available resource?</div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra">Thanks,</div>
        <div class="gmail_extra"><br clear="all">
          <div>
            <div>
              <div dir="ltr">
                <div style="font-family:arial;font-size:small">Ryan</div>
              </div>
            </div>
          </div>
          <br>
          <div class="gmail_quote">On Wed, Feb 4, 2015 at 1:02 PM,
            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-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello,<br>
              <div>
                <div><br>
                  On 04/02/15 16:28, Ryan Brindley wrote:<br>
                  ><br>
                  > Hey community,<br>
                  ><br>
                  > I'm trying to understand t_relay () when a
                  forward times out.<br>
                  ><br>
                  > This is an abbreviated version of what i have:<br>
                  ><br>
                  > Request_route {<br>
                  > ...<br>
                  > Route(do1)<br>
                  > }<br>
                  ><br>
                  > Route [do1]  {<br>
                  > ...<br>
                  > T_on_reply (1reply)<br>
                  > T_on_failure (1fail)<br>
                  > T_relay ()<br>
                  > }<br>
                  ><br>
                  > Reply_route[1reply] {<br>
                  > ...<br>
                  > If (t_check_status (302)) {<br>
                  >   Route (do2)<br>
                  > }<br>
                  > }<br>
                  ><br>
                  > Failure_route [1fail] {<br>
                  > Xlog (dafail1)<br>
                  > }<br>
                  ><br>
                  > Route [do2]{<br>
                  > ...<br>
                  > T_on_reply (2reply)<br>
                  > T_on_failure (2fail)<br>
                  > T_relay ()<br>
                  > }<br>
                  ><br>
                  > Reply_route [2reply]{<br>
                  > Xlog (twerked)<br>
                  > }<br>
                  ><br>
                  > Failure_route [2fail]{<br>
                  > Xlog (failured)<br>
                  > }<br>
                  ><br>
                  > The case im currently interested in is when the
                  first relay (do1)<br>
                  > returns a 302 and then the second (do2) times
                  out.<br>
                  ><br>
                  > What happens on the second when it times out, it
                  hits the 1fail<br>
                  > failure_route. This messes with my logic as i
                  would've expected (and<br>
                  > want to find out how to make it) hit the 2nd
                  failure_route.<br>
                  ><br>
                  > I also noticed that if i loop and try the do2
                  again after the first<br>
                  > failure it will then hit the 2fail route.<br>
                  ><br>
                  > Any clarification on this subject would be
                  greatly appreciated,<br>
                  ><br>
                </div>
              </div>
              It is not easy to follow your pseduo-code, but it is
              important to know<br>
              that the SIP response is handled in an onreply_route.
              Given that, you<br>
              cannot call t_relay() on a SIP response (reply). SIP
              responses are<br>
              routed automatically based on Via header.<br>
              <br>
              t_relay() must be used only for SIP requests. If you sent
              the SIP<br>
              request to many destinations (parallel fork), the tm is
              waiting for all<br>
              branches to complete before executing failure_route, the
              selected<br>
              response is based on an algorithm derived from SIP RFC
              specs. If you<br>
              want to have a routing block executed on a negative reply,
              use<br>
              branch_failure_route - in it, you get the request for
              processing and you<br>
              can relay it again.<br>
              <br>
              Cheers,<br>
              Daniel<br>
              <span><font color="#888888"><br>
                  --<br>
                  Daniel-Constantin Mierla<br>
                  <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><br>
                  Kamailio World Conference, May 27-29, 2015<br>
                  Berlin, Germany - <a moz-do-not-send="true"
                    href="http://www.kamailioworld.com" target="_blank">http://www.kamailioworld.com</a><br>
                  <br>
                  <br>
                  _______________________________________________<br>
                  SIP Express Router (SER) and Kamailio (OpenSER) -
                  sr-users mailing list<br>
                  <a moz-do-not-send="true"
                    href="mailto:sr-users@lists.sip-router.org"
                    target="_blank">sr-users@lists.sip-router.org</a><br>
                  <a moz-do-not-send="true"
                    href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
                    target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
                </font></span></blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla
<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>
Kamailio World Conference, May 27-29, 2015
Berlin, Germany - <a class="moz-txt-link-freetext" href="http://www.kamailioworld.com">http://www.kamailioworld.com</a></pre>
  </body>
</html>