summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorDavid Hankins <dhankins@isc.org>2009-01-30 22:32:29 +0000
committerDavid Hankins <dhankins@isc.org>2009-01-30 22:32:29 +0000
commit8466a0353ff373c805c6a2aaa5ab257ccd5a7ae4 (patch)
tree286de9c85416b86805daef7858094fc6e2508417 /server
parentae36487bd3f365f083a6670877f8696a2245234b (diff)
downloadisc-dhcp-8466a0353ff373c805c6a2aaa5ab257ccd5a7ae4.tar.gz
- Using reserved leases no longer results in 'lease with binding state
free not on its queue' error messages, thanks to a patch from Frode Nordahl. [ISC-Bugs #19274]
Diffstat (limited to 'server')
-rw-r--r--server/mdb.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/server/mdb.c b/server/mdb.c
index 42b3abc6..004e94ad 100644
--- a/server/mdb.c
+++ b/server/mdb.c
@@ -1236,9 +1236,12 @@ int supersede_lease (comp, lease, commit, propogate, pimmediate)
/* Figure out which queue it's on. */
switch (comp -> binding_state) {
case FTS_FREE:
- lq = &comp -> pool -> free;
- if (!(comp->flags & RESERVED_LEASE))
+ if (comp->flags & RESERVED_LEASE)
+ lq = &comp->pool->reserved;
+ else {
+ lq = &comp->pool->free;
comp->pool->free_leases--;
+ }
#if defined(FAILOVER_PROTOCOL)
do_pool_check = 1;
@@ -1260,9 +1263,12 @@ int supersede_lease (comp, lease, commit, propogate, pimmediate)
break;
case FTS_BACKUP:
- lq = &comp -> pool -> backup;
- if (!(comp->flags & RESERVED_LEASE))
+ if (comp->flags & RESERVED_LEASE)
+ lq = &comp->pool->reserved;
+ else {
+ lq = &comp->pool->backup;
comp->pool->backup_leases--;
+ }
#if defined(FAILOVER_PROTOCOL)
do_pool_check = 1;