diff --git a/src/network/networkd-dhcp-server-bus.c b/src/network/networkd-dhcp-server-bus.c index 91a10dc33a..a38cb99c2c 100644 --- a/src/network/networkd-dhcp-server-bus.c +++ b/src/network/networkd-dhcp-server-bus.c @@ -81,6 +81,9 @@ static int dhcp_server_emit_changed(Link *link, const char *property, ...) { assert(link); + if (sd_bus_is_ready(link->manager->bus) <= 0) + return 0; + path = link_bus_path(link); if (!path) return log_oom(); diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 31c96706a2..7226200f00 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -2272,6 +2272,9 @@ int manager_connect_bus(Manager *m) { int _manager_send_changed(Manager *manager, const char *property, ...) { assert(manager); + if (sd_bus_is_ready(manager->bus) <= 0) + return 0; + char **l = strv_from_stdarg_alloca(property); int r = sd_bus_emit_properties_changed_strv( diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c index 6f15c53953..b86b325144 100644 --- a/src/resolve/resolved-dns-zone.c +++ b/src/resolve/resolved-dns-zone.c @@ -500,7 +500,7 @@ void dns_zone_item_conflict(DnsZoneItem *i) { /* Withdraw the conflict item */ i->state = DNS_ZONE_ITEM_WITHDRAWN; - dnssd_signal_conflict(i->scope->manager, dns_resource_key_name(i->rr->key)); + (void) dnssd_signal_conflict(i->scope->manager, dns_resource_key_name(i->rr->key)); /* Maybe change the hostname */ if (manager_is_own_hostname(i->scope->manager, dns_resource_key_name(i->rr->key)) > 0) diff --git a/src/resolve/resolved-dnssd.c b/src/resolve/resolved-dnssd.c index 33d695a9ce..aed9c5c1cd 100644 --- a/src/resolve/resolved-dnssd.c +++ b/src/resolve/resolved-dnssd.c @@ -329,10 +329,13 @@ int dnssd_txt_item_new_from_data(const char *key, const void *data, const size_t return 0; } -void dnssd_signal_conflict(Manager *manager, const char *name) { +int dnssd_signal_conflict(Manager *manager, const char *name) { DnssdService *s; int r; + if (sd_bus_is_ready(manager->bus) <= 0) + return 0; + HASHMAP_FOREACH(s, manager->dnssd_services) { if (s->withdrawn) continue; @@ -343,22 +346,20 @@ void dnssd_signal_conflict(Manager *manager, const char *name) { s->withdrawn = true; r = sd_bus_path_encode("/org/freedesktop/resolve1/dnssd", s->name, &path); - if (r < 0) { - log_error_errno(r, "Can't get D-BUS object path: %m"); - return; - } + if (r < 0) + return log_error_errno(r, "Can't get D-BUS object path: %m"); r = sd_bus_emit_signal(manager->bus, path, "org.freedesktop.resolve1.DnssdService", "Conflicted", NULL); - if (r < 0) { - log_error_errno(r, "Cannot emit signal: %m"); - return; - } + if (r < 0) + return log_error_errno(r, "Cannot emit signal: %m"); break; } } + + return 0; } diff --git a/src/resolve/resolved-dnssd.h b/src/resolve/resolved-dnssd.h index 8fe755687e..d020bb531c 100644 --- a/src/resolve/resolved-dnssd.h +++ b/src/resolve/resolved-dnssd.h @@ -58,4 +58,4 @@ int dnssd_load(Manager *manager); int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtItem **ret_item); int dnssd_txt_item_new_from_data(const char *key, const void *value, const size_t size, DnsTxtItem **ret_item); int dnssd_update_rrs(DnssdService *s); -void dnssd_signal_conflict(Manager *manager, const char *name); +int dnssd_signal_conflict(Manager *manager, const char *name); diff --git a/src/shared/local-addresses.c b/src/shared/local-addresses.c index c97687cd05..9dec7a7e1a 100644 --- a/src/shared/local-addresses.c +++ b/src/shared/local-addresses.c @@ -395,7 +395,8 @@ int local_outbounds( sa.in = (struct sockaddr_in) { .sin_family = AF_INET, .sin_addr = gateways[i].address.in, - .sin_port = htobe16(53), /* doesn't really matter which port we pick — we just care about the routing decision */ + .sin_port = htobe16(53), /* doesn't really matter which port we pick — + * we just care about the routing decision */ }; break; @@ -427,7 +428,7 @@ int local_outbounds( * good chance this fails. Since 5.7 this restriction was dropped and the first * SO_BINDTOINDEX on a socket may be done without privileges. This one has the benefit of * really influencing the routing decision, i.e. this one definitely works for us — as long - * as we have the privileges for it.*/ + * as we have the privileges for it. */ r = socket_bind_to_ifindex(fd, gateways[i].ifindex); if (r < 0) log_debug_errno(r, "Failed to bind socket to interface %i, ignoring: %m", gateways[i].ifindex); @@ -438,7 +439,7 @@ int local_outbounds( * *after* the routing decision and the auto-binding already took place. If so we can still * make use of the binding and return it. Hence, let's not unnecessarily fail early here: we * can still easily detect if the auto-binding worked or not, by comparing the bound IP - * address with zero — which we do below. */ + * address with zero — which we do below. */ if (connect(fd, &sa.sa, SOCKADDR_LEN(sa)) < 0) log_debug_errno(errno, "Failed to connect SOCK_DGRAM socket to gateway, ignoring: %m"); diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index 42b6c29d3b..cb5d42b1d3 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -607,7 +607,13 @@ static int manager_receive_response(sd_event_source *source, int fd, uint32_t re m->poll_interval_usec / USEC_PER_SEC, offset, delay, m->samples_jitter, m->drift_freq / 65536, spike ? " (ignored)" : ""); - (void) sd_bus_emit_properties_changed(m->bus, "/org/freedesktop/timesync1", "org.freedesktop.timesync1.Manager", "NTPMessage", NULL); + if (sd_bus_is_ready(m->bus) > 0) + (void) sd_bus_emit_properties_changed( + m->bus, + "/org/freedesktop/timesync1", + "org.freedesktop.timesync1.Manager", + "NTPMessage", + NULL); if (!m->good) { _cleanup_free_ char *pretty = NULL;