]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network:dhcp4_server_configure returns if not able to get timezone
authortramsay <treyramsay@gmail.com>
Mon, 5 Apr 2021 22:12:49 +0000 (17:12 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 15 May 2021 16:14:49 +0000 (18:14 +0200)
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

src/network/networkd-dhcp-server.c

index f1216183bf6a136d1ec5286fcfdad4a6ef090a30..d2efc301855e36f97552518871dafb2c6aa8fb8f 100644 (file)
@@ -364,21 +364,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) {