Hi All,<br /><br />I have opensips using load_balancer module with two destinations. Both have 500 pstn resources and execute a simple application
that answers a call, plays some audio and waits for the BYE message.<br />If I place few calls (10 at the same time) all works great. However, if I
put more traffic, the pstn resources are not freed always, even if all the calls are ended gracefully and the BYE and the subsequent OK messages are
forwarded correctly.<br />I'm sure there's a problem with my configuration or my destinations. So I need to now what triggers the liberation of the
resource.<br /><br />This is my configuration script:<br /><br />####### Global Parameters #########<br /><br />debug=3<br
/>#log_facility=LOG_LOCAL6<br /><br />fork=yes<br />children=4<br /><br />/* uncomment the following lines to enable debugging */<br />#debug=6<br
/>#fork=no<br />#log_stderror=yes<br /><br />/* uncomment the next line to disable TCP (default on) */<br />disable_tcp=yes<br /><br />port=5061<br
/><br />/* uncomment and configure the following line if you want opensips to <br />&nbsp;&nbsp; bind on a specific interface/port/proto (default
bind on all available) */<br />listen=udp:10.180.12.6:5061<br /><br /><br />####### Modules Section ########<br /><br />#set module path<br
/>mpath=&quot;/usr/local/lib/opensips/modules/&quot;<br /><br />loadmodule &quot;maxfwd.so&quot;<br />loadmodule &quot;sl.so&quot;<br />loadmodule
&quot;db_mysql.so&quot;<br />loadmodule &quot;tm.so&quot;<br />loadmodule &quot;uri.so&quot;<br />loadmodule &quot;rr.so&quot;<br />loadmodule
&quot;dialog.so&quot;<br />loadmodule &quot;mi_fifo.so&quot;<br />loadmodule &quot;signaling.so&quot;<br />loadmodule &quot;textops.so&quot;<br
/>loadmodule &quot;load_balancer.so&quot;<br />loadmodule &quot;options.so&quot;<br /><br /># ----------------- setting module-specific parameters
---------------<br /><br /><br /># ----- mi_fifo params -----<br />modparam(&quot;mi_fifo&quot;, &quot;fifo_name&quot;,
&quot;/tmp/opensips_fifo&quot;)<br /><br /><br /># ----- rr params -----<br /># add value to ;lr param to cope with most of the UAs<br
/>#modparam(&quot;rr&quot;, &quot;enable_full_lr&quot;, 1)<br /># do not append from tag to the RR (no need for this script)<br
/>#modparam(&quot;rr&quot;, &quot;append_fromtag&quot;, 0)<br />modparam(&quot;rr&quot;,&quot;enable_double_rr&quot;,1)<br
/>modparam(&quot;rr&quot;,&quot;append_fromtag&quot;,1)<br /><br /><br /># ----- uri params -----<br />modparam(&quot;uri&quot;,
&quot;use_uri_table&quot;, 0)<br /><br />modparam(&quot;dialog&quot;, &quot;dlg_flag&quot;, 13)<br />modparam(&quot;dialog&quot;,
&quot;db_mode&quot;, 1)<br />modparam(&quot;dialog&quot;, &quot;db_url&quot;, &quot;mysql://root:Viamonte1621@localhost/opensips&quot;)<br /><br
/><br />modparam(&quot;load_balancer&quot;, &quot;db_url&quot;,&quot;mysql://root:Viamonte1621@localhost/opensips&quot;)<br
/>modparam(&quot;load_balancer&quot;, &quot;probing_interval&quot;, 30)<br />modparam(&quot;load_balancer&quot;, &quot;probing_method&quot;,
&quot;OPTIONS&quot;)<br />modparam(&quot;load_balancer&quot;, &quot;probing_from&quot;, &quot;sip:proxy@10.180.12.6:5061&quot;)<br /><br /><br /><br
/><br />####### Routing Logic ########<br /><br /><br /># main request routing logic<br />route{<br />&nbsp;&nbsp;&nbsp; if
(!mf_process_maxfwd_header(&quot;3&quot;)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;483&quot;,&quot;looping&quot;);<br
/>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br />&nbsp;&nbsp;&nbsp; }<br /><br /><br />&nbsp;&nbsp;&nbsp; if (!has_totag()) {<br
/>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;[Redmond] Hast'n to tag\n&quot;);<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # initial request<br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; record_route();<br />&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # sequential request -&gt; obey Route
indication<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;[Redmond] Has to tag\n&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
loose_route();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t_relay();<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # handle cancel and re-transmissions<br />&nbsp;&nbsp;&nbsp; if (
is_method(&quot;CANCEL&quot;) ) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( t_check_trans() )<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; t_relay();<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br
/>&nbsp;&nbsp;&nbsp; if (uri==myself){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (is_method(&quot;OPTIONS&quot;) &amp;&amp; (!
uri=~&quot;sip:.*[@]+.*&quot;)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; options_reply();<br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br /><br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # from now on we have only the initial requests<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(!is_method(&quot;INVITE&quot;)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;[Redmond] Not invite\n&quot;);<br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; if ( t_check_trans() )<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br />&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; exit;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
#send_reply(&quot;405&quot;,&quot;Method Not Allowed&quot;);<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #exit;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br /><br />&nbsp;&nbsp;&nbsp; load_balance(&quot;0&quot;,&quot;pstn&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # LB function
returns negative if no suitable destination (for requested resources) is found,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # or if all
destinations are full<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($retcode&lt;0) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
xlog(&quot;[Redmond] Service full\n&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;500&quot;,&quot;Service full&quot;);<br
/>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; xlog(&quot;[Redmond]
Selected destination is: $du\n&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # send it out<br />&nbsp;&nbsp;&nbsp; if (!t_relay())
{<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br />&nbsp;&nbsp;&nbsp; }<br />}<br /><br />failure_route[1] {<br
/>&nbsp;&nbsp;&nbsp; xlog(&quot;[Redmond] Failure route\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(t_check_status(&quot;(408)|(5[0-9][0-9])&quot;)) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lb_disable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(load_balance(&quot;0&quot;,&quot;pstn&quot;)) {<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t_on_failure(&quot;1&quot;);<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t_relay();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t_reply(&quot;503&quot;, &quot;Service Unavailable&quot;);<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br
/>}<br /><br />Thanks,<br />Diego