MINOR: resolvers: Don't try to match immediatly renewed ADD items

The loop looking for existing ADD items to renew their last_seen must ignore
the items already renewed in the same loop. To do so, we rely on the
last_seen time. because it is now based on now_ms, it is safe.

Doing so avoid to match several time the same ADD item when the same IP
address is found in several ADD item. This reduces the number of extra DNS
resolutions.

This patch depends on "MINOR: resolvers: Use milliseconds for cached items
in resolver responses". Both may be backported as far as 2.2 if necessary.
This commit is contained in:
Christopher Faulet 2021-03-12 16:42:45 +01:00
parent 55c1c4053f
commit e8674c7184

View File

@ -1250,7 +1250,7 @@ static int resolv_validate_dns_response(unsigned char *resp, unsigned char *bufe
continue;
ar_item = tmp_record->ar_item;
if (ar_item->type != answer_record->type ||
if (ar_item->type != answer_record->type || ar_item->last_seen == now_ms ||
len != tmp_record->data_len ||
resolv_hostname_cmp(answer_record->name, tmp_record->target, tmp_record->data_len))
continue;