fix: do not hammer dns servers re-requesting udp trackernames (#2641)
Fixes #1815.
This commit is contained in:
parent
29af76d977
commit
17cb155451
|
@ -457,6 +457,7 @@ static void tau_tracker_on_dns(int errcode, struct evutil_addrinfo* addr, void*
|
|||
auto* tracker = static_cast<struct tau_tracker*>(vtracker);
|
||||
|
||||
tracker->dns_request = nullptr;
|
||||
tracker->addr_expiration_time = tr_time() + 60 * 60; /* one hour */
|
||||
|
||||
if (errcode != 0)
|
||||
{
|
||||
|
@ -468,7 +469,6 @@ static void tau_tracker_on_dns(int errcode, struct evutil_addrinfo* addr, void*
|
|||
{
|
||||
dbgmsg(tracker->key, "DNS lookup succeeded");
|
||||
tracker->addr = addr;
|
||||
tracker->addr_expiration_time = tr_time() + 60 * 60; /* one hour */
|
||||
tau_tracker_upkeep(tracker);
|
||||
}
|
||||
}
|
||||
|
@ -610,6 +610,7 @@ static void tau_tracker_upkeep_ex(struct tau_tracker* tracker, bool timeout_reqs
|
|||
dbgmsg(tracker->host, "Expiring old DNS result");
|
||||
evutil_freeaddrinfo(tracker->addr);
|
||||
tracker->addr = nullptr;
|
||||
tracker->addr_expiration_time = 0;
|
||||
}
|
||||
|
||||
/* are there any requests pending? */
|
||||
|
@ -618,6 +619,12 @@ static void tau_tracker_upkeep_ex(struct tau_tracker* tracker, bool timeout_reqs
|
|||
return;
|
||||
}
|
||||
|
||||
// if DNS lookup *recently* failed for this host, do nothing
|
||||
if (tracker->addr == nullptr && now < tracker->addr_expiration_time)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* if we don't have an address yet, try & get one now. */
|
||||
if (!closing && tracker->addr == nullptr && tracker->dns_request == nullptr)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue