]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: emit change for LLMNRHostname
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 25 Oct 2019 14:29:42 +0000 (16:29 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 25 Oct 2019 14:41:25 +0000 (16:41 +0200)
src/resolve/resolved-bus.c
src/resolve/resolved-manager.c

index 2adf612e3b26ae293b1bb3cad9fc5ea2f24092fa..4c18cb1597f51e2f67ac513266a28a793958dbec 100644 (file)
@@ -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),
index 6ebc020359120445f02d0e8ab4dcc5fab1316614..95f698ab06d6498c7365cbf35043495207a8bf45 100644 (file)
@@ -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;
 }