summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-10-25 16:29:42 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-10-25 16:41:25 +0200
commit86c0411ee570ce01f73da819affec7ce75b8c0f6 (patch)
tree060df2e5fb41c748fb2645e85ecda8e4723d2a30
parent5f3340ca5b27899b6ab16bb48522a7911dcfb867 (diff)
downloadsystemd-86c0411ee570ce01f73da819affec7ce75b8c0f6.tar.gz
resolved: emit change for LLMNRHostname
-rw-r--r--src/resolve/resolved-bus.c2
-rw-r--r--src/resolve/resolved-manager.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c
index 2adf612e3b..4c18cb1597 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 6ebc020359..95f698ab06 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;
}