From 33b6167eda688806aa110d4e52b8e48b5b8db6ad Mon Sep 17 00:00:00 2001 From: russ Date: Tue, 16 Dec 2003 01:29:40 +0000 Subject: not sure who made this change, but it certainly mucks things up (note 'fwrite(leases, ...'), adds a bit more code, and some stack overhead. Anywho, this fixes it, and retains the spirit of what the submitter of this change was attempting to acheive (the entire lease is written at once in a struct) git-svn-id: svn://busybox.net/trunk/busybox@8090 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- networking/udhcp/files.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c index 20761a585..e2002460d 100644 --- a/networking/udhcp/files.c +++ b/networking/udhcp/files.c @@ -229,7 +229,7 @@ void write_leases(void) unsigned int i; char buf[255]; time_t curr = time(0); - unsigned long lease_time; + unsigned long tmp_time; if (!(fp = fopen(server_config.lease_file, "w"))) { LOG(LOG_ERR, "Unable to open %s for writing", server_config.lease_file); @@ -237,17 +237,21 @@ void write_leases(void) } for (i = 0; i < server_config.max_leases; i++) { - struct dhcpOfferedAddr lease; if (leases[i].yiaddr != 0) { + + /* screw with the time in the struct, for easier writing */ + tmp_time = leases[i].expires; + if (server_config.remaining) { if (lease_expired(&(leases[i]))) - lease_time = 0; - else lease_time = leases[i].expires - curr; - } else lease_time = leases[i].expires; - lease.expires = htonl(lease_time); - memcpy(lease.chaddr, leases[i].chaddr, 16); - lease.yiaddr = leases[i].yiaddr; - fwrite(leases, sizeof(lease), 1, fp); + leases[i].expires = 0; + else leases[i].expires -= curr; + } /* else stick with the time we got */ + leases[i].expires = htonl(leases[i].expires); + fwrite(leases[i], sizeof(sturct dhcpOfferedAddr), 1, fp); + + /* Then restore it when done. */ + leases[i].expires = tmp_time; } } fclose(fp); -- cgit v1.2.3-55-g6feb