ircd::net::dns::resolver: Add conf item to ease off ServFail retries.

This commit is contained in:
Jason Volk 2023-03-14 21:15:04 -07:00
parent 684dd18497
commit ac3b85114b
2 changed files with 16 additions and 1 deletions

View File

@ -37,6 +37,7 @@ ircd::net::dns::resolver
static conf::item<milliseconds> send_rate;
static conf::item<size_t> send_burst;
static conf::item<size_t> retry_max;
static conf::item<bool> retry_serv_fail;
answers_callback callback;
std::vector<ip::udp::endpoint> server; // The list of active servers

View File

@ -39,6 +39,13 @@ ircd::net::dns::resolver::retry_max
{ "default", 20L },
};
decltype(ircd::net::dns::resolver::retry_serv_fail)
ircd::net::dns::resolver::retry_serv_fail
{
{ "name", "ircd.net.dns.resolver.retry_serv_fail" },
{ "default", true },
};
decltype(ircd::net::dns::resolver::servers)
ircd::net::dns::resolver::servers
{
@ -726,7 +733,14 @@ ircd::net::dns::resolver::handle_reply(const ipport &from,
// Handle ServFail as a special case here. We can try again without
// handling this tag or propagating this error any further yet.
if(header.rcode == 2 && tag.tries < size_t(server.size()))
const bool serv_fail_retry
{
retry_serv_fail
&& header.rcode == 2
&& tag.tries < size_t(server.size())
};
if(serv_fail_retry)
{
log::error
{