summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Lemon <source@isc.org>2001-04-27 21:32:48 +0000
committerTed Lemon <source@isc.org>2001-04-27 21:32:48 +0000
commit225fed9174edb105d317787e3df5edba5df51f4c (patch)
tree918884e0681ac2f18e29f2686e2cf3bb6c2b2332
parent9750d9ca6284b0b760286f7b4f1d31437206e160 (diff)
downloadisc-dhcp-225fed9174edb105d317787e3df5edba5df51f4c.tar.gz
Fix some host references.
-rw-r--r--server/dhcp.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/server/dhcp.c b/server/dhcp.c
index ca611b9a..8bf409e1 100644
--- a/server/dhcp.c
+++ b/server/dhcp.c
@@ -43,7 +43,7 @@
#ifndef lint
static char copyright[] =
-"$Id: dhcp.c,v 1.190 2001/04/18 18:58:39 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n";
+"$Id: dhcp.c,v 1.191 2001/04/27 21:32:48 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@@ -1619,7 +1619,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp)
break;
}
if (h)
- host_reference (&lease -> host, hp, MDL);
+ host_reference (&lease -> host, h, MDL);
}
if (hp)
host_dereference (&hp, MDL);
@@ -3250,11 +3250,22 @@ int find_lease (struct lease **lp,
hang it off the lease so that we can use the supplied
options. */
if (lease && host && !lease -> host) {
- for (; host; host = host -> n_ipaddr) {
- if (!host -> fixed_addr) {
- host_reference (&lease -> host, host, MDL);
+ struct host_decl *p = (struct host_decl *)0;
+ struct host_decl *n = (struct host_decl *)0;
+ host_reference (&p, host, MDL);
+ while (p) {
+ if (!p -> fixed_addr) {
+ host_reference (&lease -> host, p, MDL);
+ host_dereference (&p, MDL);
break;
}
+ if (p -> n_ipaddr)
+ host_reference (&n, p -> n_ipaddr, MDL);
+ host_dereference (&p, MDL);
+ if (n) {
+ host_reference (&p, n, MDL);
+ host_dereference (&n, MDL);
+ }
}
}