statefiles: don't write empty hosts files master
authorDavid Härdeman <david@hardeman.nu>
Tue, 9 Dec 2025 09:11:08 +0000 (10:11 +0100)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Wed, 10 Dec 2025 05:36:39 +0000 (06:36 +0100)
This is mostly cosmetic, skip writing out hosts files for interfaces
where it makes little sense to do so (i.e. where the hosts file will
anyway be empty).

Closes: https://github.com/openwrt/odhcpd/issues/338
Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/odhcpd/pull/342
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
src/statefiles.c

index 0ce2a2ee712e87b12027740d2f5817bc154b7839..558b0120ee61d4e631beb259ba821108a562b6a1 100644 (file)
@@ -415,7 +415,15 @@ static void statefiles_write_hosts(time_t now)
                return;
 
        avl_for_each_element(&interfaces, ctxt.iface, avl) {
+               if (ctxt.iface->ignore)
+                       continue;
+
+               if (ctxt.iface->dhcpv4 != MODE_SERVER && ctxt.iface->dhcpv6 != MODE_SERVER)
+                       continue;
+
                ctxt.fp = statefiles_open_tmp_file(config.dhcp_hostsdir_fd);
+               if (!ctxt.fp)
+                       continue;
 
                if (ctxt.iface->dhcpv6 == MODE_SERVER) {
                        struct dhcpv6_lease *lease;
@@ -534,6 +542,7 @@ static bool statefiles_write_state(time_t now)
        };
        uint8_t newmd5[16];
 
+       /* Return value unchecked, continue in order to get the md5 */
        ctxt.fp = statefiles_open_tmp_file(config.dhcp_statedir_fd);
 
        md5_begin(&ctxt.md5);