diff options
author | Lennart Poettering <lennart@poettering.net> | 2017-02-13 20:34:39 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2017-02-13 20:34:39 +0100 |
commit | 4a46ed1bc69487a0f78ee35e32185ba146279312 (patch) | |
tree | b38c993f5059232eb02725b67b9aa329ba738c3d /src | |
parent | 53f7443a4302ca7950777f6140d7d87052a202d9 (diff) |
resolved: don't return ANY transactions when looking for transactions
This reverts a part of 53fda2bb933694c9bdb1bbf1f5583e39673b74b2:
On classic DNS and LLMNR ANY requests may be replied to with any kind of
RR, and the reply does not have to be comprehensive: these protocols
simply define that if there's an RRset that can answer the question,
then at least one should be sent as reply, but not necessarily all. This
means it's not safe to "merge" transactions for arbitrary RR types into
ANY requests, as the reply might not answer the specific question.
As the merging is primarily an optimization, let's undo this for now.
This logic may be readded later, in a way that only applies to mDNS.
Also, there's an OOM problem with this chunk: dns_resource_key_new()
might fail due to OOM and this is not handled. (This is easily removed
though, by using DNS_RESOURCE_KEY_CONST()).
Diffstat (limited to 'src')
-rw-r--r-- | src/resolve/resolved-dns-scope.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index 750409eebf..7a26edbaf7 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -793,15 +793,8 @@ DnsTransaction *dns_scope_find_transaction(DnsScope *scope, DnsResourceKey *key, /* Try to find an ongoing transaction that is a equal to the * specified question */ t = hashmap_get(scope->transactions_by_key, key); - if (!t) { - DnsResourceKey *key_any; - - key_any = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_ANY, dns_resource_key_name(key)); - t = hashmap_get(scope->transactions_by_key, key_any); - key_any = dns_resource_key_unref(key_any); - if (!t) - return NULL; - } + if (!t) + return NULL; /* Refuse reusing transactions that completed based on cached * data instead of a real packet, if that's requested. */ |