Hey all;<div><br></div><div>So I worked out what was going on with my previous test, where the failover route wasn&#39;t being called - as Bogdan pointed out, it was a TCP failure, because I was /sbin/route rejecting. If I actually simulated a failure on the destination server OpenSIPS&#39; fr_timer caught it and it was pushed into the failure_block correctly. I was, apparently, being too clever for my own good.</div>
<div><br></div><div>My next problem is along the same vein - I continue to get dispatcher failing over reliably (which it is now doing, hurrah!): I&#39;m marking the gateway as bad on a timeout, however it doesn&#39;t seem to want to remember that the gateway is bad. I&#39;ve got probing turned on, and I&#39;m marking it to be probed, but even an immediately subsequent call (within seconds of the first call marking the gateway as bad) is routed back to that first gateway. Now the failover works, it&#39;s cleanly moving onto the next host, which is nice - but I&#39;d still like to utilise the probing scheme, if I can.</div>
<div><br></div><div>I&#39;m also getting a rather curious error in the logs:</div><div><div>Found failover, working on set: 1101</div><div>WARNING:dispatcher:ds_select_dst: algo 8 not implemented - using first entry...</div>
<div>Attempting to relay call to <a href="http://sip:+12125551212@192.168.0.99:5060">sip:+12125551212@192.168.0.99:5060</a></div><div>FR: <a href="mailto:204c758872fc3aa520599fd52a404783@192.168.0.2">204c758872fc3aa520599fd52a404783@192.168.0.2</a> -- TIMEOUT for Gateway 192.168.0.99 (marking as bad)</div>
<div>ERROR:core:search_first_avp: 0 ID or NULL NAME AVP!</div></div><div><br></div><div>I&#39;m wondering if the above error is some kind of AVP storage thing I haven&#39;t set up that is causing it not to properly &quot;mark&quot; the gateway, or more likely, not remember the mark. But I can&#39;t spot anything in the dispatcher documentation that says as such.</div>
<div><br></div><div>Relevant (hopefully) sections (cut-up config, this is not whole):</div><div>Parameters initialisation:</div><div><div># Timers and failover flags</div><div>modparam(&quot;tm&quot;, &quot;wt_timer&quot;, 30)</div>
<div>modparam(&quot;tm&quot;, &quot;fr_timer&quot;, 3)</div><div>modparam(&quot;tm&quot;, &quot;fr_inv_timer&quot;, 120)</div><div>modparam(&quot;tm&quot;, &quot;disable_6xx_block&quot;, 1)</div><div><br></div><div># Set up the dispatcher</div>
<div>modparam(&quot;dispatcher&quot;, &quot;db_url&quot;, &quot;mysql://<a href="http://openser:password@192.168.0.20/company">openser:password@192.168.0.20/company</a>&quot;)</div><div>modparam(&quot;dispatcher&quot;, &quot;table_name&quot;, &quot;dispatcher&quot;)</div>
<div>modparam(&quot;dispatcher&quot;, &quot;flags&quot;, 2 )</div><div>modparam(&quot;dispatcher&quot;, &quot;dst_avp&quot;, &quot;$avp(i:271)&quot;)</div><div>modparam(&quot;dispatcher&quot;, &quot;grp_avp&quot;, &quot;$avp(i:272)&quot;)</div>
<div>modparam(&quot;dispatcher&quot;, &quot;cnt_avp&quot;, &quot;$avp(i:273)&quot;)</div><div>modparam(&quot;dispatcher&quot;, &quot;ds_ping_method&quot;, &quot;OPTIONS&quot;)</div><div>modparam(&quot;dispatcher&quot;, &quot;ds_ping_interval&quot;, 5)</div>
<div>modparam(&quot;dispatcher&quot;, &quot;ds_ping_from&quot;, &quot;<a href="mailto:sip%3A%2B14109999351@192.168.0.2">sip:+14109999351@192.168.0.2</a>&quot;)</div><div>modparam(&quot;dispatcher&quot;, &quot;ds_probing_threshhold&quot;, 3)</div>
</div><div><br></div><div>Abbreviated main route block with route/failure_route blocks</div><div><div>route{</div><div>        xlog( &quot;L_INFO&quot;, &quot;[$Tf] Found failover, working on set: 1101\n&quot;);</div><div>
<br></div><div>        if (!ds_select_domain(&quot;1101&quot;,&quot;8&quot;)) {</div><div>                t_reply(&quot;503&quot;,&quot;Unable to locate failover set requested&quot;);</div><div>                return;</div>
<div>                };</div><div><br></div><div>        route(1);</div><div>        }</div></div><div><br></div><div><div>route[1] {</div><div>        # Enable the failure block only on dispatcher lists which we can fail over</div>
<div>        t_on_failure(&quot;2&quot;);</div><div><br></div><div>        xlog( &quot;L_NOTICE&quot;, &quot;[$Tf] Attempting to relay call to $ru\n&quot;);</div><div><br></div><div>        if( !t_relay() ){</div><div>                return;</div>
<div>                }</div><div>        return;</div><div>        }</div><div><br></div><div>failure_route[2] {</div><div>        if (t_was_cancelled()) {</div><div>                exit;</div><div>                }</div>
<div><br></div><div>        if( t_check_status(&quot;408&quot;) ){</div><div>                xlog( &quot;L_NOTICE&quot;, &quot;[$Tf] FR: $ci -- TIMEOUT for Gateway $rd (marking as bad)\n&quot; );</div><div>                ds_mark_dst(&quot;p&quot;);</div>
<div>                }</div><div><br></div><div>        if( ds_next_domain() ){</div><div>                t_on_failure(&quot;2&quot;);</div><div><br></div><div>                if (!t_relay()) {</div><div>                        return;</div>
<div>                        }</div><div>                return;</div><div>        } else {</div><div>                t_reply(&quot;503&quot;, &quot;Service unavailable -- no more gateways&quot; );</div><div>                return;</div>
<div>                }</div><div>        }</div></div><div><br></div><div><br></div><div>As always, folks, I appreciate all your help. Enjoy your Thursday;</div><div><br></div><div> - Jock</div>