]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: restore ANY reply behaviour for mDNS 5335/head
authorLennart Poettering <lennart@poettering.net>
Tue, 14 Feb 2017 10:12:08 +0000 (11:12 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 14 Feb 2017 10:13:58 +0000 (11:13 +0100)
This restores behaviour of 53fda2bb933694c9bdb1bbf1f5583e39673b74b2: for
mDNS (and mDNS only) we'll match replies to transactions honouring ANY
matches.

src/resolve/resolved-mdns.c

index aa7661b5adb5c2d6e85b1c2a3eac407a9a240b69..c40e8f75f0e30bcc2c9327509e8aec9bf8b5c22d 100644 (file)
@@ -171,6 +171,19 @@ static int on_mdns_packet(sd_event_source *s, int fd, uint32_t revents, void *us
                         t = dns_scope_find_transaction(scope, rr->key, false);
                         if (t)
                                 dns_transaction_process_reply(t, p);
+
+                        /* Also look for the various types of ANY transactions */
+                        t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(rr->key->class, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), false);
+                        if (t)
+                                dns_transaction_process_reply(t, p);
+
+                        t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, rr->key->type, dns_resource_key_name(rr->key)), false);
+                        if (t)
+                                dns_transaction_process_reply(t, p);
+
+                        t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), false);
+                        if (t)
+                                dns_transaction_process_reply(t, p);
                 }
 
                 dns_cache_put(&scope->cache, NULL, DNS_PACKET_RCODE(p), p->answer, false, (uint32_t) -1, 0, p->family, &p->sender);