dhcpd: write lease file on exit

function                                             old     new   delta
udhcpd_main                                         1431    1403     -28

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
index dd55e70..9ad9595 100644
--- a/networking/udhcp/dhcpd.c
+++ b/networking/udhcp/dhcpd.c
@@ -377,6 +377,7 @@
 	/* 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 @@
 		}
 		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 @@
 			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;