summaryrefslogtreecommitdiff
path: root/src/resolve/resolved-manager.c
diff options
context:
space:
mode:
authorRoman Beranek <roman.beranek@prusa3d.com>2021-04-30 15:51:44 +0200
committerLennart Poettering <lennart@poettering.net>2021-05-10 12:29:48 +0200
commitee3713b71ddf182852a399953968a2b39af22104 (patch)
treeb589471a47779fac86aa8d3b3e5b5215a9010c62 /src/resolve/resolved-manager.c
parentc362a432af57d7fc6b58938afa82fabcb41c9e6c (diff)
downloadsystemd-ee3713b71ddf182852a399953968a2b39af22104.tar.gz
resolve: remove RRs from zones before an update
During an update of RRs, the records of each DNS-SD service are replaced with new ones. However the old RRs can only be removed from the mDNS scopes as long as they remain accessible from the DnssdService structures, otherwise they remain stuck there. Therefore the removal must take place before the update.
Diffstat (limited to 'src/resolve/resolved-manager.c')
-rw-r--r--src/resolve/resolved-manager.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
index 21154a7f85..4001be23e7 100644
--- a/src/resolve/resolved-manager.c
+++ b/src/resolve/resolved-manager.c
@@ -1141,15 +1141,16 @@ void manager_refresh_rrs(Manager *m) {
m->mdns_host_ipv4_key = dns_resource_key_unref(m->mdns_host_ipv4_key);
m->mdns_host_ipv6_key = dns_resource_key_unref(m->mdns_host_ipv6_key);
+ HASHMAP_FOREACH(l, m->links)
+ link_add_rrs(l, true);
+
if (m->mdns_support == RESOLVE_SUPPORT_YES)
HASHMAP_FOREACH(s, m->dnssd_services)
if (dnssd_update_rrs(s) < 0)
log_warning("Failed to refresh DNS-SD service '%s'", s->name);
- HASHMAP_FOREACH(l, m->links) {
- link_add_rrs(l, true);
+ HASHMAP_FOREACH(l, m->links)
link_add_rrs(l, false);
- }
}
static int manager_next_random_name(const char *old, char **ret_new) {