wait-online: attempt to re-connect after varlink disconnects
Now that systemd-resolved has socket activation for it's varlink sockets, this should should be enough to make the DNS configuration logic robust against systemd-resolved stops and restarts.
This commit is contained in:
@@ -338,6 +338,8 @@ static int manager_network_monitor_listen(Manager *m) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int manager_dns_configuration_listen(Manager *m);
|
||||
|
||||
static int on_dns_configuration_event(
|
||||
sd_varlink *link,
|
||||
sd_json_variant *parameters,
|
||||
@@ -352,6 +354,12 @@ static int on_dns_configuration_event(
|
||||
assert(link);
|
||||
|
||||
if (error_id) {
|
||||
if (streq(error_id, SD_VARLINK_ERROR_DISCONNECTED)) {
|
||||
log_debug("DNS configuration monitor disconnected, reconnecting...");
|
||||
|
||||
return manager_dns_configuration_listen(m);
|
||||
}
|
||||
|
||||
log_warning("DNS configuration event error, ignoring: %s", error_id);
|
||||
return 0;
|
||||
}
|
||||
@@ -411,6 +419,8 @@ static int manager_dns_configuration_listen(Manager *m) {
|
||||
if (!m->requires_dns)
|
||||
return 0;
|
||||
|
||||
m->varlink_client = sd_varlink_unref(m->varlink_client);
|
||||
|
||||
r = sd_varlink_connect_address(&vl, "/run/systemd/resolve/io.systemd.Resolve.Monitor");
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to connect to io.systemd.Resolve.Monitor: %m");
|
||||
|
||||
Reference in New Issue
Block a user