[OpenSIPS-Users] dispatcher "fail-over" doesn't seem happy
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Fri Apr 2 10:58:50 CEST 2010
Hi Jock,
I guess the problem is detecting the failure . The failure route catches
only SIP failures (like you sent the requests and you get nothing or
negative reply); but failure route does not catch sending error (like in
your case).
So, you should do something like:
route[try_next] {
here put the next stuff
}
{
...
t_on_failure("sip_failure");
if (!t_relay()) {
xlog("L_WARN", "[$Tf] t_relay fail\n");
route(try_next);
}
...
}
failure_route[sip_failure]
{
if (t_check_status("....") {
# is a destination failure
route(try_next);
}
}
Regards,
bogdan
Jock McKechnie wrote:
>
>
> On Thu, Apr 1, 2010 at 10:26 AM, Brett Nemeroff <brett at nemeroff.com
> <mailto:brett at nemeroff.com>> wrote:
>
> Where is your failure route? :)
> -Brett
>
>
> I intentionally chose to not include it, along with the other 200
> lines of config, for simplicity, but you're right, given this is a
> failure, I clearly should've, duh :)
>
> failure_route[2] {
> if (t_was_cancelled()) {
> xlog( "L_NOTICE", "[$Tf] FR: transaction cancelled -
> exiting\n" );
> exit;
> }
>
> # If fr_timer expires t_check_status("408") is true, although
> $rs is <null>
> if( t_check_status("408") ){
> xlog( "L_NOTICE", "[$Tf] FR: $ci -- TIMEOUT for
> Gateway $rd\n" );
> } else {
> xlog( "L_NOTICE", "[$Tf] FR: $ci -- $rs reason $rr\n" );
> }
>
> # 403 -- typically ISDN network says 'not a valid number' etc..
> if( t_check_status("403") ){
> xlog("L_WARN", "[$Tf] FR: $ci -- SIP-$rs Forbidden ->
> ISDN Cause Code 1\n" );
> return;
> }
>
> if( ds_next_domain() ){
> xlog( "L_NOTICE", "[$Tf] FR: $ci Next gateway $fU ->
> $tU via $rd \n" );
>
> t_on_failure("2");
>
> if( !t_relay() ){
> xlog( "L_WARN", "[$Tf] FR: $ci -- ERROR -
> Cannot t_relay() -- $fU -> $tU via $rd\n" );
> return;
> }
> return;
> } else {
> xlog( "L_WARN", "[$Tf] FR: $ci No more gateways ->
> 503.\n" );
> t_reply("503", "Service unavailable -- no more
> gateways" );
> return;
> }
>
> }
>
> - Jock
>
>
>
>
> On Thu, Apr 1, 2010 at 11:20 AM, Jock McKechnie
> <jock.mckechnie at gmail.com <mailto:jock.mckechnie at gmail.com>> wrote:
> > Greetings all;
> >
> > I'm attempting to set up a fail-over only scenario using
> dispatcher and am
> > encountering some problems. I'm using dispatcher since we're already
> > utilising it for load balancing, so it makes sense to reuse the
> tool, and
> > according to the OpenSIPS 1.6 dispatcher module documentation it
> supports
> > fail-over.
> >
> > If the destination server is running, everything works as
> expected - algo 8
> > (which OpenSIPS logs as not found and defaulting to the first
> entry) pushes
> > the call to the first server at all times. However if I block
> the route to
> > the destination server like so:
> > /sbin/route add -host 192.168.0.99 reject
> > Then instead of failing over I get a SIP 477 (Send failed) error.
> >
> > The chunk of routing looks like so:
> >
> > xlog("L_WARN", "[$Tf] Found failover, working on set: 1101\n");
> > if (!ds_select_domain("1101", "8")) {
> > t_reply("503", "Unable to locate failover set requested");
> > return;
> > };
> >
> > route(1);
> > };
> >
> > route[1] {
> > t_on_failure("2");
> >
> > xlog("L_WARN", "Attempting to relay call to $ru\n");
> >
> > if (!t_relay()) {
> > xlog("L_WARN", "[$Tf] t_relay fail\n");
> > return;
> > }
> > return;
> > }
> >
> >
> >
> > The log contains:
> > [Thu Apr 1 11:14:35 2010] Found failover, working on set: 1101
> > WARNING:dispatcher:ds_select_dst: algo 8 not implemented - using
> first
> > entry...
> > Attempting to relay call to sip:+12125551212 at 192.168.0.99:5060
> <http://sip:+12125551212@192.168.0.99:5060>
> > ERROR:core:udp_send:
> sendto(sock,0xb3b9bd28,1039,0,0xb3ba2cf4,16): Network
> > is unreachable(101)
> > ERROR:tm:msg_send: udp_send failed
> > ERROR:tm:t_forward_nonack: sending request failed
> > [Thu Apr 1 11:14:35 2010] Found failover, working on set: 1101
> > WARNING:dispatcher:ds_select_dst: algo 8 not implemented - using
> first
> > entry...
> > Attempting to relay call to sip:+12125551212 at 192.168.0.99:5060
> <http://sip:+12125551212@192.168.0.99:5060>
> >
> > This suggests to me that instead of failing over it's simply
> retrying the
> > first entry, which it shouldn't be, and after finding it out for
> a second
> > time (and thus exhausting the two-entry set), gives up.
> >
> > Any thoughts?
> >
> > - JP
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
> >
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
--
Bogdan-Andrei Iancu
www.voice-system.ro
More information about the Users
mailing list