Browse Source

[2108] When adding RRsets, ensure that any last rrset was flushed

Mukund Sivaraman 12 years ago
parent
commit
d06f56460c
1 changed files with 11 additions and 1 deletions
  1. 11 1
      src/lib/datasrc/memory/memory_client.cc

+ 11 - 1
src/lib/datasrc/memory/memory_client.cc

@@ -719,12 +719,22 @@ InMemoryClient::getFileName(const isc::dns::Name& zone_name) const {
 result::Result
 InMemoryClient::add(const isc::dns::Name& zone_name,
                     const ConstRRsetPtr& rrset) {
+    assert(!impl_->last_rrset_);
+
     ZoneTable::FindResult result(impl_->zone_table_->findZone(zone_name));
     if (result.code != result::SUCCESS) {
         isc_throw(DataSourceError, "No such zone: " + zone_name.toText());
     }
 
-    return (impl_->add(rrset, zone_name, *result.zone_data));
+    result::Result ret(impl_->add(rrset, zone_name, *result.zone_data));
+
+    // Add any last RRset that was left
+    impl_->addRdataSet(zone_name, *result.zone_data,
+                       ConstRRsetPtr(), ConstRRsetPtr());
+
+    assert(!impl_->last_rrset_);
+
+    return (ret);
 }
 
 namespace {