-2347. [bug] Delete now traverses the RB tree in the canonical
- order. [RT #17451]
-
-2343. [bug] (Seemingly) duplicate IPv6 entries could be
- created in ADB. [RT #17837]
-
--- 9.3.5rc2 released ---
2338. [bug] check_ds() could be called with a non DS rdataset.
/*
- * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: adb.c,v 1.181.2.11.2.32 2008/03/20 23:45:32 tbox Exp $ */
+/* $Id: adb.c,v 1.181.2.11.2.33 2008/04/03 00:17:07 each Exp $ */
/*
* Implementation notes
isc_boolean_t new_addresses_added;
dns_rdatatype_t rdtype;
unsigned int findoptions;
- dns_adbnamehooklist_t *hookhead;
INSIST(DNS_ADBNAME_VALID(adbname));
adb = adbname->adb;
INSIST(rdata.length == 4);
memcpy(&ina.s_addr, rdata.data, 4);
isc_sockaddr_fromin(&sockaddr, &ina, 0);
- hookhead = &adbname->v4;
} else {
INSIST(rdata.length == 16);
memcpy(in6a.s6_addr, rdata.data, 16);
isc_sockaddr_fromin6(&sockaddr, &in6a, 0);
- hookhead = &adbname->v6;
}
INSIST(nh == NULL);
link_entry(adb, addr_bucket, entry);
} else {
- for (anh = ISC_LIST_HEAD(*hookhead);
+ for (anh = ISC_LIST_HEAD(adbname->v4);
anh != NULL;
anh = ISC_LIST_NEXT(anh, plink))
if (anh->entry == foundentry)
}
new_addresses_added = ISC_TRUE;
- if (nh != NULL)
- ISC_LIST_APPEND(*hookhead, nh, plink);
+ if (nh != NULL) {
+ if (rdtype == dns_rdatatype_a)
+ ISC_LIST_APPEND(adbname->v4, nh, plink);
+ else
+ ISC_LIST_APPEND(adbname->v6, nh, plink);
+ }
nh = NULL;
result = dns_rdataset_next(rdataset);
}
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rbt.c,v 1.115.2.2.2.16 2008/03/31 13:37:44 fdupont Exp $ */
+/* $Id: rbt.c,v 1.115.2.2.2.17 2008/04/03 00:17:07 each Exp $ */
/* Principal Authors: DCL */
node = LEFT(node);
goto traverse;
}
+ if (RIGHT(node) != NULL) {
+ node = RIGHT(node);
+ goto traverse;
+ }
if (DOWN(node) != NULL) {
node = DOWN(node);
goto traverse;
node->magic = 0;
#endif
parent = PARENT(node);
- if (RIGHT(node) != NULL)
- PARENT(RIGHT(node)) = parent;
if (parent != NULL) {
if (LEFT(parent) == node)
- LEFT(parent) = RIGHT(node);
+ LEFT(parent) = NULL;
else if (DOWN(parent) == node)
- DOWN(parent) = RIGHT(node);
- } else
- parent = RIGHT(node);
+ DOWN(parent) = NULL;
+ else if (RIGHT(parent) == node)
+ RIGHT(parent) = NULL;
+ }
isc_mem_put(rbt->mctx, node, NODE_SIZE(node));
rbt->nodecount--;
node = parent;
./lib/dns/.cvsignore X 1998,1999,2000,2001
./lib/dns/Makefile.in MAKE 1998,1999,2000,2001,2002,2003,2004,2006
./lib/dns/acl.c C 1999,2000,2001,2002,2003,2004,2006,2007
-./lib/dns/adb.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008
+./lib/dns/adb.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007
./lib/dns/api X 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008
./lib/dns/byaddr.c C 2000,2001,2002,2003,2004
./lib/dns/cache.c C 1999,2000,2001,2002,2003,2004,2005,2006