BIND 10 trac2108_3, updated. 56afaa4d876b6af0814e396c95d9375305878737 [2108] Changed proto of ZoneTable::setZoneData() to return a FindResult

BIND 10 source code commits bind10-changes at lists.isc.org
Fri Sep 14 05:18:36 UTC 2012


The branch, trac2108_3 has been updated
       via  56afaa4d876b6af0814e396c95d9375305878737 (commit)
      from  e3f72ac2caea7a75deb1b772d9681d6be3aad203 (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 56afaa4d876b6af0814e396c95d9375305878737
Author: Mukund Sivaraman <muks at isc.org>
Date:   Fri Sep 14 10:47:07 2012 +0530

    [2108] Changed proto of ZoneTable::setZoneData() to return a FindResult
    
    This is so we can differentiate between whether a node was not found
    and whether a node was found, but its old data was empty.
    
    We also don't set the node data now when an exact match was not found.
    Before it used to set for partial matches too (which was a bug).

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

Summary of changes:
 src/lib/datasrc/memory/memory_client.cc |    8 +++++---
 src/lib/datasrc/memory/zone_table.cc    |   11 +++++------
 src/lib/datasrc/memory/zone_table.h     |    6 +++---
 3 files changed, 13 insertions(+), 12 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/memory_client.cc b/src/lib/datasrc/memory/memory_client.cc
index 5617690..b818bdd 100644
--- a/src/lib/datasrc/memory/memory_client.cc
+++ b/src/lib/datasrc/memory/memory_client.cc
@@ -620,9 +620,11 @@ InMemoryClient::InMemoryClientImpl::load(
         ++zone_count_;
     }
 
-    ZoneData *data = zone_table_->setZoneData(zone_name, holder.release());
-    if (data != NULL) {
-        ZoneData::destroy(local_mem_sgmt_, data, rrclass_);
+    ZoneTable::FindResult fr(zone_table_->setZoneData(zone_name,
+                                                      holder.release()));
+    assert(fr.code == result::SUCCESS);
+    if (fr.zone_data != NULL) {
+        ZoneData::destroy(local_mem_sgmt_, fr.zone_data, rrclass_);
     }
 
     return (result.code);
diff --git a/src/lib/datasrc/memory/zone_table.cc b/src/lib/datasrc/memory/zone_table.cc
index f2cddc0..a74a61d 100644
--- a/src/lib/datasrc/memory/zone_table.cc
+++ b/src/lib/datasrc/memory/zone_table.cc
@@ -132,19 +132,18 @@ ZoneTable::findZone(const Name& name) const {
     return (FindResult(my_result, node->getData()));
 }
 
-ZoneData*
+ZoneTable::FindResult
 ZoneTable::setZoneData(const Name& name, ZoneData* data)
 {
     ZoneTableNode* node(NULL);
 
     ZoneTableTree::Result result(zones_->find(name, &node));
 
-    if ((result != ZoneTableTree::EXACTMATCH) &&
-        (result != ZoneTableTree::PARTIALMATCH)) {
-        return (NULL);
+    if (result != ZoneTableTree::EXACTMATCH) {
+        return (FindResult(result::NOTFOUND, NULL));
+    } else {
+        return (FindResult(result::SUCCESS, node->setData(data)));
     }
-
-    return (node->setData(data));
 }
 
 } // end of namespace memory
diff --git a/src/lib/datasrc/memory/zone_table.h b/src/lib/datasrc/memory/zone_table.h
index 733e339..8ad6213 100644
--- a/src/lib/datasrc/memory/zone_table.h
+++ b/src/lib/datasrc/memory/zone_table.h
@@ -191,9 +191,9 @@ public:
     ///
     /// \param name A domain name for which the zone data is set.
     /// \param data The new zone data to set.
-    /// \return A \c ZoneData object containing the old data if the zone
-    /// was found, or \c NULL otherwise.
-    ZoneData* setZoneData(const isc::dns::Name& name, ZoneData* data);
+    /// \return A \c FindResult object containing the old data if the
+    /// zone was found.
+    FindResult setZoneData(const isc::dns::Name& name, ZoneData* data);
 
 private:
     boost::interprocess::offset_ptr<ZoneTableTree> zones_;



More information about the bind10-changes mailing list