mirror of
https://github.com/isc-projects/bind9.git
synced 2026-02-25 02:42:33 -05:00
3260. [bug] "rrset-order cyclic" could appears to not rotate
for some query patterns. [RT #27170]
This commit is contained in:
parent
a560545a31
commit
41ca314cc2
2 changed files with 14 additions and 1 deletions
3
CHANGES
3
CHANGES
|
|
@ -1,3 +1,6 @@
|
|||
3260. [bug] "rrset-order cyclic" could appears to not rotate
|
||||
for some query patterns. [RT #27170]
|
||||
|
||||
--- 9.9.0rc1 released ---
|
||||
|
||||
3259. [bug] named-compilezone: Suppress "dump zone to <file>"
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: rbtdb.c,v 1.323 2011/12/07 22:21:05 marka Exp $ */
|
||||
/* $Id: rbtdb.c,v 1.324 2011/12/22 23:43:52 marka Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
|
|
@ -2744,6 +2744,14 @@ zone_zonecut_callback(dns_rbtnode_t *node, dns_name_t *name, void *arg) {
|
|||
return (result);
|
||||
}
|
||||
|
||||
static inline unsigned int
|
||||
prand(isc_uint32_t val) {
|
||||
val ^= val >> 16;
|
||||
val ^= val >> 8;
|
||||
val ^= val >> 4;
|
||||
return (val & 0xf);
|
||||
}
|
||||
|
||||
static inline void
|
||||
bind_rdataset(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node,
|
||||
rdatasetheader_t *header, isc_stdtime_t now,
|
||||
|
|
@ -2783,6 +2791,8 @@ bind_rdataset(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node,
|
|||
raw = (unsigned char *)header + sizeof(*header);
|
||||
rdataset->private3 = raw;
|
||||
rdataset->count = header->count++;
|
||||
/* Add a weak pseudo random value [0..15]. */
|
||||
header->count += prand(header->count);
|
||||
if (rdataset->count == ISC_UINT32_MAX)
|
||||
rdataset->count = 0;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue