Commit d4ab440d authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

Merge branch 'work/resolveriterator'

parents 241c11e7 33eb030e
// Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
......@@ -50,7 +49,7 @@ ResponseScrubber::Category ResponseScrubber::addressCheck(
unsigned int
ResponseScrubber::scrubSection(Message& message,
const vector<const Name*>& names,
const NameComparisonResult::NameRelation connection,
const NameComparisonResult::NameRelation connection,
const Message::Section section)
{
unsigned int count = 0; // Count of RRsets removed
......@@ -74,30 +73,32 @@ ResponseScrubber::scrubSection(Message& message,
// Start looking at the remaining entries in the section.
removed = false;
for (; (i != message.endSection(section)) && (!removed); ++i) {
for (; i != message.endSection(section); ++i) {
// Loop through the list of names given and see if any are in the
// given relationship with the QNAME of this RRset
bool nomatch = true;
bool match = false;
for (vector<const Name*>::const_iterator n = names.begin();
((n != names.end()) && nomatch); ++n) {
((n != names.end())); ++n) {
NameComparisonResult result = (*i)->getName().compare(**n);
NameComparisonResult::NameRelation relationship =
result.getRelation();
if ((relationship == NameComparisonResult::EQUAL) ||
(relationship == connection)) {
// RRset in the specified relationship, so a match has
// been found
nomatch = false;
match = true;
break;
}
}
// Remove the RRset if there was no match to one of the given names.
if (nomatch) {
if (!match) {
message.removeRRset(section, i);
++count; // One more RRset removed
removed = true; // Something was removed
break; // It invalidated the iterators, start again
} else {
// There was a match so this is one more entry we can skip next
......
......@@ -228,8 +228,9 @@ MessageRenderer::writeName(const Name& name, const bool compress) {
name.toWire(impl_->nbuffer_);
unsigned int i;
std::set<NameCompressNode>::const_iterator notfound = impl_->nodeset_.end();
std::set<NameCompressNode>::const_iterator n = notfound;
std::set<NameCompressNode, NameCompare>::const_iterator notfound =
impl_->nodeset_.end();
std::set<NameCompressNode, NameCompare>::const_iterator n = notfound;
// Find the longest ancestor name in the rendered set that matches the
// given name.
......
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