1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-03-05 08:58:21 +03:00

network: restart dhcp4 client when renewing lease is requested but the client is stopped

Follow-up for fc35a9f8d1632c4e7a279228f869bfc77d8f5b9c.

Fixes the issue https://github.com/systemd/systemd/pull/29472#issuecomment-1759092138.

(cherry picked from commit 9bd91e34aaf7c759617d4763853e55f419c06ffe)
(cherry picked from commit f453cbc5162eca42c415b8dc2325a7d734aca3e5)
This commit is contained in:
Yu Watanabe 2023-10-12 18:13:55 +09:00 committed by Luca Boccassi
parent ca1a43c56b
commit 073d2db589

@ -626,11 +626,15 @@ int bus_link_method_renew(sd_bus_message *message, void *userdata, sd_bus_error
if (r == 0)
return 1; /* Polkit will call us back */
if (l->dhcp_client) {
if (sd_dhcp_client_is_running(l->dhcp_client))
r = sd_dhcp_client_send_renew(l->dhcp_client);
if (r < 0)
return r;
}
else
/* The DHCPv4 client may have been stopped by the IPv6 only mode. Let's unconditionally
* restart the client here. Note, if the DHCPv4 client is disabled, then dhcp4_start() does
* nothing and returns 0. */
r = dhcp4_start(l);
if (r < 0)
return r;
return sd_bus_reply_method_return(message, NULL);
}