aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruss <russ@69ca8d6d-28ef-0310-b511-8ec308f3f277>2003-12-16 01:29:40 +0000
committerruss <russ@69ca8d6d-28ef-0310-b511-8ec308f3f277>2003-12-16 01:29:40 +0000
commit33b6167eda688806aa110d4e52b8e48b5b8db6ad (patch)
tree6d95e14e79a0d7a8f5f0357e4f6129a93330b9cb
parent9c8b7c46804c1bf9c50390b857f7bdf5ee69a4e0 (diff)
downloadbusybox-w32-33b6167eda688806aa110d4e52b8e48b5b8db6ad.tar.gz
busybox-w32-33b6167eda688806aa110d4e52b8e48b5b8db6ad.tar.bz2
busybox-w32-33b6167eda688806aa110d4e52b8e48b5b8db6ad.zip
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
-rw-r--r--networking/udhcp/files.c22
1 files 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)
229 unsigned int i; 229 unsigned int i;
230 char buf[255]; 230 char buf[255];
231 time_t curr = time(0); 231 time_t curr = time(0);
232 unsigned long lease_time; 232 unsigned long tmp_time;
233 233
234 if (!(fp = fopen(server_config.lease_file, "w"))) { 234 if (!(fp = fopen(server_config.lease_file, "w"))) {
235 LOG(LOG_ERR, "Unable to open %s for writing", server_config.lease_file); 235 LOG(LOG_ERR, "Unable to open %s for writing", server_config.lease_file);
@@ -237,17 +237,21 @@ void write_leases(void)
237 } 237 }
238 238
239 for (i = 0; i < server_config.max_leases; i++) { 239 for (i = 0; i < server_config.max_leases; i++) {
240 struct dhcpOfferedAddr lease;
241 if (leases[i].yiaddr != 0) { 240 if (leases[i].yiaddr != 0) {
241
242 /* screw with the time in the struct, for easier writing */
243 tmp_time = leases[i].expires;
244
242 if (server_config.remaining) { 245 if (server_config.remaining) {
243 if (lease_expired(&(leases[i]))) 246 if (lease_expired(&(leases[i])))
244 lease_time = 0; 247 leases[i].expires = 0;
245 else lease_time = leases[i].expires - curr; 248 else leases[i].expires -= curr;
246 } else lease_time = leases[i].expires; 249 } /* else stick with the time we got */
247 lease.expires = htonl(lease_time); 250 leases[i].expires = htonl(leases[i].expires);
248 memcpy(lease.chaddr, leases[i].chaddr, 16); 251 fwrite(leases[i], sizeof(sturct dhcpOfferedAddr), 1, fp);
249 lease.yiaddr = leases[i].yiaddr; 252
250 fwrite(leases, sizeof(lease), 1, fp); 253 /* Then restore it when done. */
254 leases[i].expires = tmp_time;
251 } 255 }
252 } 256 }
253 fclose(fp); 257 fclose(fp);