Hello,

Thank you for replying, but I don't understand how it will help me.

I already use ds_mark_dst() and know how it works. Problem is that I can't control network errors with like this:
if (network_error() || timeout()) {
xlog("L_WARN", "Server $si:$sp has network problems and will be blacklisted.\n");
ds_mark_dst("IP");
}

Marat

вт, 14 сент. 2021 г. в 13:33, Henning Westerholt <hw@skalatan.de>:

Hello,

 

you probably want to check the dispatcher module docs out for this ds_mark_dst(..) function. You find also some RPC commands to e.g. inspect on shell. You can also try the event-routes documented there to log some info.

 

https://kamailio.org/docs/modules/stable/modules/dispatcher.html#dispatcher.f.ds_mark_dst

 

Cheers,

 

Henning

 

--

Henning Westerholt – https://skalatan.de/blog/

Kamailio services – https://gilawa.com

 

From: sr-users <sr-users-bounces@lists.kamailio.org> On Behalf Of Marat Gareev
Sent: Thursday, September 9, 2021 8:02 PM
To: Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>
Subject: [SR-Users] Manage blacklisting on network errors

 

Hello!

 

I have a simple config for routing requests with failover and blacklisting on 408, 480 and 503 codes from servers.

 

This is a part of config:

# Wrapper for relaying requests

route[RELAY] {

 

  # the base event routes

  t_on_branch("MANAGE_BRANCH");

  t_on_reply("MANAGE_REPLY");

  t_on_failure("MANAGE_FAILURE");

 

  if (!t_relay()) {

    sl_reply_error();

  }

  exit;

}

 

# Manage incoming replies

onreply_route[MANAGE_REPLY] {

  xlog("L_NOTICE", "$rr ($rs) [$cs] ($ci) $si:$sp - $ua\n");

  if ( t_check_status("(503)|(408)|(480)") ) {

    xlog("L_WARN", "Server will be blacklisted: $si:$sp ($rs)\n");

  }

}

 

# Manage failure routing cases

failure_route[MANAGE_FAILURE] {

 

  if ( !t_check_status("(503)|(408)|(480)") ) {

    exit;

  }

 

  ds_mark_dst("IP"); # blacklist

 

  if (t_is_canceled()) exit;

 

  if (!ds_next_domain()) {

    send_reply("503", "Service Unavailable");

    exit;

  }

 

  route(RELAY);

}

 

If there is a timeout or network error on the server side, it is blacklisted. How can such cases be managed and how can they be logged?
I didn't find this on the module page: