summaryrefslogtreecommitdiff
path: root/server/dhcpv6.c
diff options
context:
space:
mode:
authorTomek Mrugalski <tomek@isc.org>2011-04-13 09:53:26 +0000
committerTomek Mrugalski <tomek@isc.org>2011-04-13 09:53:26 +0000
commitc7aa4dd4a4a3434f6f6ce017d2f4391882730049 (patch)
treef0c946ee9110cbc809fe3853d7edd02958f11e9d /server/dhcpv6.c
parent7a1474f4f3d05bf27e55371d0cde5195e989d38d (diff)
downloadisc-dhcp-c7aa4dd4a4a3434f6f6ce017d2f4391882730049.tar.gz
DHCPv6 server now responds properly if client asks for a prefix that
is already assigned to a different client. [ISC-Bugs #23948]
Diffstat (limited to 'server/dhcpv6.c')
-rw-r--r--server/dhcpv6.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/server/dhcpv6.c b/server/dhcpv6.c
index 50376b1a..83fa1adf 100644
--- a/server/dhcpv6.c
+++ b/server/dhcpv6.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006-2010 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2006-2011 by Internet Systems Consortium, Inc. ("ISC")
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -3708,7 +3708,9 @@ reply_process_try_prefix(struct reply_state *reply,
continue;
status = try_client_v6_prefix(&reply->lease, pool,
&data_pref);
- if (status == ISC_R_SUCCESS)
+ /* If we found it in this pool (either in use or available),
+ there is no need to look further. */
+ if ( (status == ISC_R_SUCCESS) || (status == ISC_R_ADDRINUSE) )
break;
}