BIND 10 trac2218_2, updated. 88871270308be3aaaeb8918c29c2b2c3ca4286e5 [2218] Insert using the NSEC3 record's entire name into the NSEC3Data tree

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Sep 19 06:19:48 UTC 2012


The branch, trac2218_2 has been updated
       via  88871270308be3aaaeb8918c29c2b2c3ca4286e5 (commit)
       via  436f507ae4e387f7fe5e242864500a6839bfc32b (commit)
       via  054b2a99a4e527a15739c0e6a9a0247bb23a5d1a (commit)
      from  38081a3eb213dad9b2233f37e8c8f499a9e50f1a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 88871270308be3aaaeb8918c29c2b2c3ca4286e5
Author: Mukund Sivaraman <muks at isc.org>
Date:   Wed Sep 19 10:00:18 2012 +0530

    [2218] Insert using the NSEC3 record's entire name into the NSEC3Data tree

commit 436f507ae4e387f7fe5e242864500a6839bfc32b
Author: Mukund Sivaraman <muks at isc.org>
Date:   Wed Sep 19 09:27:52 2012 +0530

    [2218] Check for NULL covering_node

commit 054b2a99a4e527a15739c0e6a9a0247bb23a5d1a
Author: Mukund Sivaraman <muks at isc.org>
Date:   Wed Sep 19 09:27:08 2012 +0530

    [2218] Use the class RdataEncoder

-----------------------------------------------------------------------

Summary of changes:
 src/lib/datasrc/memory/memory_client.cc            |    5 +++-
 .../datasrc/memory/tests/zone_finder_unittest.cc   |    9 +++---
 src/lib/datasrc/memory/zone_finder.cc              |   31 ++++++++++++--------
 3 files changed, 28 insertions(+), 17 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/memory_client.cc b/src/lib/datasrc/memory/memory_client.cc
index d5c6a7a..6096e78 100644
--- a/src/lib/datasrc/memory/memory_client.cc
+++ b/src/lib/datasrc/memory/memory_client.cc
@@ -325,12 +325,15 @@ public:
             }
         }
 
+        // Make just the NSEC3 hash label uppercase, and insert the
+        // entire name into the NSEC3Data ZoneTree.
         string fst_label = rrset->getName().split(0, 1).toText(true);
         transform(fst_label.begin(), fst_label.end(), fst_label.begin(),
                   ::toupper);
+        const string rest = rrset->getName().split(1).toText(true);
 
         ZoneNode* node;
-        nsec3_data->insertName(mem_sgmt_, Name(fst_label), &node);
+        nsec3_data->insertName(mem_sgmt_, Name(fst_label + "." + rest), &node);
 
         RdataEncoder encoder;
 
diff --git a/src/lib/datasrc/memory/tests/zone_finder_unittest.cc b/src/lib/datasrc/memory/tests/zone_finder_unittest.cc
index 895608c..552a85a 100644
--- a/src/lib/datasrc/memory/tests/zone_finder_unittest.cc
+++ b/src/lib/datasrc/memory/tests/zone_finder_unittest.cc
@@ -280,18 +280,19 @@ public:
              }
         }
 
+        // Make just the NSEC3 hash label uppercase, and insert the
+        // entire name into the NSEC3Data ZoneTree.
         string fst_label = rrset->getName().split(0, 1).toText(true);
         transform(fst_label.begin(), fst_label.end(), fst_label.begin(),
                   ::toupper);
+        const string rest = rrset->getName().split(1).toText(true);
 
         ZoneNode *node;
-        nsec3_data->insertName(mem_sgmt_, Name(fst_label), &node);
-
-        RdataEncoder encoder;
+        nsec3_data->insertName(mem_sgmt_, Name(fst_label + "." + rest), &node);
 
         // We assume that rrsig has already been checked to match rrset
         // by the caller.
-        RdataSet *set = RdataSet::create(mem_sgmt_, encoder,
+        RdataSet *set = RdataSet::create(mem_sgmt_, encoder_,
                                          rrset, ConstRRsetPtr());
         RdataSet *old_set = node->setData(set);
         if (old_set != NULL) {
diff --git a/src/lib/datasrc/memory/zone_finder.cc b/src/lib/datasrc/memory/zone_finder.cc
index 59987cf..52b4ff6 100644
--- a/src/lib/datasrc/memory/zone_finder.cc
+++ b/src/lib/datasrc/memory/zone_finder.cc
@@ -663,12 +663,12 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) {
     // the deepest label one by one, until we find a name that has a matching
     // NSEC3 hash.
     for (unsigned int labels = qlabels; labels >= olabels; --labels) {
-        const std::string hlabel =
-             (nsec3_calculate_)((labels == qlabels ?
-                                 name : name.split(qlabels - labels, labels)),
-                                nsec3_data->iterations,
-                                nsec3_data->getSaltData(),
-                                nsec3_data->getSaltLen());
+        const std::string hlabel = (nsec3_calculate_)
+            ((labels == qlabels ?
+              name : name.split(qlabels - labels, labels)),
+             nsec3_data->iterations,
+             nsec3_data->getSaltData(),
+             nsec3_data->getSaltLen());
 
         LOG_DEBUG(logger, DBG_TRACE_BASIC, DATASRC_MEM_FINDNSEC3_TRYHASH).
             arg(name).arg(labels).arg(hlabel);
@@ -678,7 +678,8 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) {
         ZoneNode* node(NULL);
         ZoneChain chain;
 
-        ZoneTree::Result result = tree.find(Name(hlabel), &node, chain);
+        ZoneTree::Result result =
+            tree.find(Name(hlabel + "." + getOrigin().toText()), &node, chain);
 
         if (result == ZoneTree::EXACTMATCH) {
             // We found an exact match.
@@ -687,7 +688,9 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) {
                                                         set,
                                                         getClass());
             ConstRRsetPtr next = createTreeNodeRRset(covering_node,
-                                                     covering_node->getData(),
+                                                     (covering_node != NULL ?
+                                                      covering_node->getData() :
+                                                      NULL),
                                                      getClass());
 
             LOG_DEBUG(logger, DBG_TRACE_BASIC,
@@ -719,12 +722,16 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) {
             if (!recursive) {   // in non recursive mode, we are done.
                 ConstRRsetPtr closest =
                     createTreeNodeRRset(covering_node,
-                                        covering_node->getData(),
+                                        (covering_node != NULL ?
+                                         covering_node->getData() :
+                                         NULL),
                                         getClass());
 
-                LOG_DEBUG(logger, DBG_TRACE_BASIC,
-                          DATASRC_MEM_FINDNSEC3_COVER).
-                    arg(name).arg(*closest);
+                if (closest) {
+                    LOG_DEBUG(logger, DBG_TRACE_BASIC,
+                              DATASRC_MEM_FINDNSEC3_COVER).
+                        arg(name).arg(*closest);
+                }
 
                 return (FindNSEC3Result(false, labels,
                                         closest, ConstRRsetPtr()));



More information about the bind10-changes mailing list