[svn] commit: r2075 - in /experiments/jinmei-onmemdb/src/bin/auth: auth_srv.cc rbt_datasrc.cc rbt_datasrc.h
BIND 10 source code commits
bind10-changes at lists.isc.org
Sun Jun 6 02:41:43 UTC 2010
Author: jinmei
Date: Sun Jun 6 02:41:43 2010
New Revision: 2075
Log:
minor correction: avoid adding duplicate NS in the authority section.
Modified:
experiments/jinmei-onmemdb/src/bin/auth/auth_srv.cc
experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.cc
experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.h
Modified: experiments/jinmei-onmemdb/src/bin/auth/auth_srv.cc
==============================================================================
--- experiments/jinmei-onmemdb/src/bin/auth/auth_srv.cc (original)
+++ experiments/jinmei-onmemdb/src/bin/auth/auth_srv.cc Sun Jun 6 02:41:43 2010
@@ -197,11 +197,16 @@
result = mem_datasrc_->getApexNode(&node);
if (result == RbtDataSrcSuccess) {
- rrset = getRbtRRset();
- result = node.findRRset(RRType::NS(), *rrset);
+ // Add NS records to the authority section (if we haven't
+ // already added them to the answer section).
+ // Note: case of qtype=ANY should also be considered.
+ RbtRRsetPtr nsrrset = getRbtRRset();
+ result = node.findRRset(RRType::NS(), *nsrrset);
if (result == RbtDataSrcSuccess) {
- message.addRRset(Section::AUTHORITY(), rrset);
- addAdditional(message, rrset, RRType::NS());
+ if (*nsrrset != *rrset) {
+ message.addRRset(Section::AUTHORITY(), nsrrset);
+ }
+ addAdditional(message, nsrrset, RRType::NS());
}
}
} else {
Modified: experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.cc
==============================================================================
--- experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.cc (original)
+++ experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.cc Sun Jun 6 02:41:43 2010
@@ -1246,6 +1246,11 @@
return (RdataIteratorPtr(new RbtRdataIterator()));
}
+bool
+RbtRRset::operator==(const RbtRRset& other) const {
+ return (impl_->rdataset_ == other.impl_->rdataset_);
+}
+
void
RbtRRset::clear() {
impl_->rbtnode_ = NULL;
Modified: experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.h
==============================================================================
--- experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.h (original)
+++ experiments/jinmei-onmemdb/src/bin/auth/rbt_datasrc.h Sun Jun 6 02:41:43 2010
@@ -98,6 +98,10 @@
virtual void addRdata(const isc::dns::rdata::Rdata& rdata);
virtual isc::dns::RdataIteratorPtr getRdataIterator() const;
RbtDataSrcResult getFirstRdata(RbtRdataHandle& rdata) const;
+ bool operator==(const RbtRRset& other) const;
+ bool operator!=(const RbtRRset& other) const {
+ return (!(*this == other));
+ }
void clear();
RbtRRsetImpl* impl_; // intentionally public, but hide details using pimpl
More information about the bind10-changes
mailing list