Commit 70b065bd authored by Bob Halley's avatar Bob Halley
Browse files

bits was being ORed with the mask instead of ANDed.

Update the entry's flags too.
parent 4f6dd514
...@@ -3427,7 +3427,15 @@ dns_adb_changeflags(dns_adb_t *adb, dns_adbaddrinfo_t *addr, ...@@ -3427,7 +3427,15 @@ dns_adb_changeflags(dns_adb_t *adb, dns_adbaddrinfo_t *addr,
bucket = addr->entry->lock_bucket; bucket = addr->entry->lock_bucket;
LOCK(&adb->entrylocks[bucket]); LOCK(&adb->entrylocks[bucket]);
addr->flags = (addr->flags & ~mask) | (bits | mask); addr->entry->flags = (addr->entry->flags & ~mask) | (bits & mask);
/*
* Note that we do not update the other bits in addr->flags with
* the most recent values from addr->entry->flags.
*
* XXXRTH I think this is what we want, because otherwise flags
* that the caller didn't ask to change could be updated.
*/
addr->flags = (addr->flags & ~mask) | (bits & mask);
UNLOCK(&adb->entrylocks[bucket]); UNLOCK(&adb->entrylocks[bucket]);
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment