<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    <tt>Hello Mark,<br>
      <br>
      Your script does not handle sequential request (like BYE) at all.
      I would strongly suggest to follow this webinar
      <a class="moz-txt-link-freetext" href="http://www.opensips.org/Documentation/Webinars#toc12">http://www.opensips.org/Documentation/Webinars#toc12</a> in order to
      understand the record routing and loose routing mechanisms in SIP.
      After that, you need to change your script accordingly (you can
      check the default opensips script - the part with the
      loose_route() function ).<br>
      <br>
      Regards,<br>
    </tt>
    <pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
    <br>
    On 05/10/2013 06:36 PM, Mark Lassing wrote:
    <blockquote
      cite="mid:zarafa.518d1404.579c.7a36e22b246e2daa@truus.netformatie.lan"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
   {font-family:"Cambria Math";
   panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
   {font-family:Calibri;
   panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
   {margin:0cm;
   margin-bottom:.0001pt;
   font-size:11.0pt;
   font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
   {mso-style-priority:99;
   color:blue;
   text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
   {mso-style-priority:99;
   color:purple;
   text-decoration:underline;}
span.E-mailStijl17
   {mso-style-type:personal-compose;
   font-family:"Calibri","sans-serif";
   color:windowtext;}
.MsoChpDefault
   {mso-style-type:export-only;
   font-size:10.0pt;}
@page WordSection1
   {size:612.0pt 792.0pt;
   margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
   {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Hi all,<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">I am trying to use the drouting module, <o:p></o:p></p>
        <p class="MsoNormal">this is working as expected, calls get
          passed to the right gw, call setup and audio is all working
          fine, <o:p></o:p></p>
        <p class="MsoNormal">but the bye request packets do not seem to
          be relayed to the destination gw, causing lot of retransmits.<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">How to solve this issue ? If more
          informations is needed please feel free to ask me.<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">--<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Mark<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### Global ####<o:p></o:p></p>
        <p class="MsoNormal">debug=6<o:p></o:p></p>
        <p class="MsoNormal">log_stderror=no<o:p></o:p></p>
        <p class="MsoNormal">log_facility=LOG_LOCAL0<o:p></o:p></p>
        <p class="MsoNormal">fork=yes<o:p></o:p></p>
        <p class="MsoNormal">children=4<o:p></o:p></p>
        <p class="MsoNormal">auto_aliases=no<o:p></o:p></p>
        <p class="MsoNormal">listen=udp:213.***.***.***:5060<o:p></o:p></p>
        <p class="MsoNormal">disable_tcp=no<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">####### Modules Section ########<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#set module path<o:p></o:p></p>
        <p class="MsoNormal">mpath="/usr/lib/opensips/modules/"<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "db_mysql.so"<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### DROUTING module<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "drouting.so"<o:p></o:p></p>
        <p class="MsoNormal">modparam("drouting", "db_url",
          "mysql://*****:*****@localhost/opensips")<o:p></o:p></p>
        <p class="MsoNormal">modparam("drouting", "probing_interval",
          60)<o:p></o:p></p>
        <p class="MsoNormal">modparam("drouting", "probing_from",
          <a class="moz-txt-link-rfc2396E" href="sip:probe@q.*****.**">"sip:probe@q.*****.**"</a>)<o:p></o:p></p>
        <p class="MsoNormal">modparam("drouting", "probing_method",
          "OPTIONS")<o:p></o:p></p>
        <p class="MsoNormal">modparam("drouting", "probing_reply_codes",
          "501, 403, 404")<o:p></o:p></p>
        <p class="MsoNormal">modparam("drouting", "use_domain", 1)<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### Transaction Module<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "tm.so"<o:p></o:p></p>
        <p class="MsoNormal">modparam("tm", "fr_timer", 5)<o:p></o:p></p>
        <p class="MsoNormal">modparam("tm", "fr_inv_timer", 30)<o:p></o:p></p>
        <p class="MsoNormal">modparam("tm", "restart_fr_on_each_reply",
          0)<o:p></o:p></p>
        <p class="MsoNormal">modparam("tm", "onreply_avp_mode", 1)<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### SIGNALING module<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "signaling.so"<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### StateLess module<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "sl.so"<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### SIP MSG OPerationS module<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "sipmsgops.so"<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### Record Route Module<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "rr.so"<o:p></o:p></p>
        <p class="MsoNormal">/* do not append from tag to the RR (no
          need for this script) */<o:p></o:p></p>
        <p class="MsoNormal">modparam("rr", "append_fromtag", 1)<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">#### MAX ForWarD module<o:p></o:p></p>
        <p class="MsoNormal">loadmodule "maxfwd.so"<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">####### Routing Logic ########<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"># main request routing logic<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">route{<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
          (!mf_process_maxfwd_header("10")) {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply("483","Too
          Many Hops");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (method == "INVITE") {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setflag(1);&nbsp;&nbsp;&nbsp; <o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;record_route();<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlog("INBOUND
          CALL,$dd,$ru,$ci,$fn,$fu,$tU@$td");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route(10);<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">}<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">route[10] {<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!do_routing("0")) { <o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog("do_routing: No rules
          matching the URI\n");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; send_reply("503","No rules
          matching the URI");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("INVITE")) { <o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_failure("10");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route(1);<o:p></o:p></p>
        <p class="MsoNormal">}<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">route[1] {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog("route(1)\n");<o:p></o:p></p>
        <p class="MsoNormal">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply("100", "Trying");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!t_relay())<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_reply_error();<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
        <p class="MsoNormal">}<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">failure_route[10] {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; xlog("DEBUG: DROUTING failure route
          active\n");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; if (t_was_cancelled()) {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; &nbsp; &nbsp; exit;<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; }<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; if (t_check_status("[34][0-9][0-9]")) {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; &nbsp; &nbsp; exit;<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; }<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; if (use_next_gw()) {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; &nbsp; &nbsp; t_relay();<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; &nbsp; &nbsp; exit;<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; } else {<o:p></o:p></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t_reply ("503", "Service not
          available");<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; &nbsp; &nbsp; exit;<o:p></o:p></p>
        <p class="MsoNormal">&nbsp; &nbsp; }<o:p></o:p></p>
        <p class="MsoNormal">}<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
      </div>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
    </blockquote>
  </body>
</html>