dhcpd: write lease file on exit
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 24 Jul 2012 15:21:26 +0000 (17:21 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 24 Jul 2012 15:21:26 +0000 (17:21 +0200)
function                                             old     new   delta
udhcpd_main                                         1431    1403     -28

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/udhcp/dhcpd.c

index dd55e70..9ad9595 100644 (file)
@@ -377,6 +377,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
        /* Setup the signal pipe */
        udhcp_sp_setup();
 
+ continue_with_autotime:
        timeout_end = monotonic_sec() + server_config.auto_time;
        while (1) { /* loop until universe collapses */
                fd_set rfds;
@@ -406,8 +407,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
                }
                if (retval == 0) {
                        write_leases();
-                       timeout_end = monotonic_sec() + server_config.auto_time;
-                       continue;
+                       goto continue_with_autotime;
                }
                if (retval < 0 && errno != EINTR) {
                        log1("Error on select");
@@ -419,10 +419,10 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
                        bb_info_msg("Received SIGUSR1");
                        write_leases();
                        /* why not just reset the timeout, eh */
-                       timeout_end = monotonic_sec() + server_config.auto_time;
-                       continue;
+                       goto continue_with_autotime;
                case SIGTERM:
                        bb_info_msg("Received SIGTERM");
+                       write_leases();
                        goto ret0;
                case 0: /* no signal: read a packet */
                        break;