summaryrefslogtreecommitdiff
path: root/server/failover.c
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2016-01-18 09:21:15 -0500
committerThomas Markwalder <tmark@isc.org>2016-01-18 09:21:15 -0500
commit3e3b525736dbce222a48b51fb09a741bcca3c456 (patch)
treecde2b7ecd8150de6c29a5af350d2c759538675cf /server/failover.c
parenta3471269e693cc4b49666874d5e57a6c9151b3b0 (diff)
downloadisc-dhcp-3e3b525736dbce222a48b51fb09a741bcca3c456.tar.gz
[master] Failover primary now accepts secondary updates from active to abandoned
Merges in rt25189.
Diffstat (limited to 'server/failover.c')
-rw-r--r--server/failover.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/server/failover.c b/server/failover.c
index a3a0383c..f6e9a6d7 100644
--- a/server/failover.c
+++ b/server/failover.c
@@ -3,7 +3,7 @@
Failover protocol support code... */
/*
- * Copyright (c) 2004-2015 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2016 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1999-2003 by Internet Software Consortium
*
* Permission to use, copy, modify, and distribute this software for any
@@ -6075,9 +6075,12 @@ normal_binding_state_transition_check (struct lease *lease,
lease. */
if (state -> i_am == primary) {
/* Except that the client may send the DHCPRELEASE
- to the secondary, and we have to accept that. */
- if (binding_state == FTS_RELEASED)
- return binding_state;
+ to the secondary. We also allow for when the
+ secondary gets a DECLINE and the primary does not.*/
+ if ((binding_state == FTS_RELEASED) ||
+ (binding_state == FTS_ABANDONED))
+ return binding_state;
+
new_state = lease -> binding_state;
goto out;
}