From 86c0411ee570ce01f73da819affec7ce75b8c0f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 25 Oct 2019 16:29:42 +0200 Subject: [PATCH] resolved: emit change for LLMNRHostname --- src/resolve/resolved-bus.c | 2 +- src/resolve/resolved-manager.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 2adf612e3b2..4c18cb1597f 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -1835,7 +1835,7 @@ static int bus_method_unregister_service(sd_bus_message *message, void *userdata static const sd_bus_vtable resolve_vtable[] = { SD_BUS_VTABLE_START(0), - SD_BUS_PROPERTY("LLMNRHostname", "s", NULL, offsetof(Manager, llmnr_hostname), 0), + SD_BUS_PROPERTY("LLMNRHostname", "s", NULL, offsetof(Manager, llmnr_hostname), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), SD_BUS_PROPERTY("LLMNR", "s", bus_property_get_resolve_support, offsetof(Manager, llmnr_support), 0), SD_BUS_PROPERTY("MulticastDNS", "s", bus_property_get_resolve_support, offsetof(Manager, mdns_support), 0), SD_BUS_PROPERTY("DNSOverTLS", "s", bus_property_get_dns_over_tls_mode, 0, 0), diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index 6ebc0203591..95f698ab06d 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -438,6 +438,7 @@ static int make_fallback_hostnames(char **full_hostname, char **llmnr_hostname, static int on_hostname_change(sd_event_source *es, int fd, uint32_t revents, void *userdata) { _cleanup_free_ char *full_hostname = NULL, *llmnr_hostname = NULL, *mdns_hostname = NULL; Manager *m = userdata; + bool llmnr_hostname_changed; int r; assert(m); @@ -446,8 +447,9 @@ static int on_hostname_change(sd_event_source *es, int fd, uint32_t revents, voi if (r < 0) return 0; /* ignore invalid hostnames */ + llmnr_hostname_changed = !streq(llmnr_hostname, m->llmnr_hostname); if (streq(full_hostname, m->full_hostname) && - streq(llmnr_hostname, m->llmnr_hostname) && + !llmnr_hostname_changed && streq(mdns_hostname, m->mdns_hostname)) return 0; @@ -458,6 +460,7 @@ static int on_hostname_change(sd_event_source *es, int fd, uint32_t revents, voi free_and_replace(m->mdns_hostname, mdns_hostname); manager_refresh_rrs(m); + (void) manager_send_changed(m, "LLMNRHostname"); return 0; } @@ -1173,6 +1176,7 @@ int manager_next_hostname(Manager *m) { free_and_replace(m->mdns_hostname, k); manager_refresh_rrs(m); + (void) manager_send_changed(m, "LLMNRHostname"); return 0; } -- 2.39.2