[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