From: tramsay Date: Mon, 5 Apr 2021 22:12:49 +0000 (-0500) Subject: network:dhcp4_server_configure returns if not able to get timezone X-Git-Tag: v248.3^0 X-Git-Url: http://git-history.diyao.me/?a=commitdiff_plain;h=37c4cfde0ce613f0f00544d3f4e2e72bf93d9c76;p=systemd%2F.git network:dhcp4_server_configure returns if not able to get timezone When /etc/localtime is a symbolic link pointing to another symbolic link, get_timezone will return -EINVAL instead of the timezone. This issue can cause systemd-networkd DHCPServer to fail. Instead of returning failure, log a warning indicating that that the timezone will not be sent. modified: networkd-dhcp-server.c (cherry picked from commit 7b5018ca9e6d3279887ec7113818f41d5b831c4d) --- diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c index ad979fb2c4..5cdf432c27 100644 --- a/src/network/networkd-dhcp-server.c +++ b/src/network/networkd-dhcp-server.c @@ -350,21 +350,23 @@ int dhcp4_server_configure(Link *link) { if (link->network->dhcp_server_emit_timezone) { _cleanup_free_ char *buffer = NULL; - const char *tz; + const char *tz = NULL; if (link->network->dhcp_server_timezone) tz = link->network->dhcp_server_timezone; else { r = get_timezone(&buffer); if (r < 0) - return log_link_error_errno(link, r, "Failed to determine timezone: %m"); - - tz = buffer; + log_link_warning_errno(link, r, "Failed to determine timezone, not sending timezone: %m"); + else + tz = buffer; } - r = sd_dhcp_server_set_timezone(link->dhcp_server, tz); - if (r < 0) - return log_link_error_errno(link, r, "Failed to set timezone for DHCP server: %m"); + if (tz) { + r = sd_dhcp_server_set_timezone(link->dhcp_server, tz); + if (r < 0) + return log_link_error_errno(link, r, "Failed to set timezone for DHCP server: %m"); + } } ORDERED_HASHMAP_FOREACH(p, link->network->dhcp_server_send_options) {