Browse Source

check whether rrsig is null before put into rrset_entry

Ocean Wang 14 years ago
parent
commit
4205ee154f
2 changed files with 30 additions and 2 deletions
  1. 4 1
      src/lib/cache/rrset_entry.cc
  2. 26 1
      src/lib/cache/tests/rrset_entry_unittest.cc

+ 4 - 1
src/lib/cache/rrset_entry.cc

@@ -37,7 +37,10 @@ RRsetEntry::RRsetEntry(const isc::dns::RRset& rrset, const RRsetTrustLevel& leve
         rdata_itor->next();
     }
 
-    rrset_->addRRsig(rrset.getRRsig());
+    RRsetPtr rrsig = rrset.getRRsig();
+    if (rrsig != NULL){
+        rrset_->addRRsig(rrsig);
+    }
 }
 
 isc::dns::RRsetPtr

+ 26 - 1
src/lib/cache/tests/rrset_entry_unittest.cc

@@ -16,7 +16,13 @@
 #include <config.h>
 #include <string>
 #include <gtest/gtest.h>
-#include "../cache_entry_key.h"
+#include <cache/cache_entry_key.h>
+#include <cache/rrset_entry.h>
+#include <dns/name.h>
+#include <dns/rrclass.h>
+#include <dns/rrtype.h>
+#include <dns/rrttl.h>
+#include <dns/rrset.h>
 
 using namespace isc::cache;
 using namespace isc::dns;
@@ -41,5 +47,24 @@ TEST_F(GenCacheKeyTest, genCacheEntryKey2) {
     EXPECT_EQ(keystr, genCacheEntryName(name, type));
 }
 
+class RRsetEntryTest : public ::testing::Test {
+protected:
+    RRsetEntryTest(): 
+        name("test.example.com"), 
+        rrset(name, RRClass::IN(), RRType::A(), RRTTL(100)),
+        trust_level(RRSET_TRUST_ADDITIONAL_AA),
+        rrset_entry(rrset, trust_level)
+    {
+    }
+    Name name;
+    RRset rrset;
+    RRsetTrustLevel trust_level;
+    RRsetEntry rrset_entry;
+};
+
+TEST_F(RRsetEntryTest, constructor) {
+//    EXPECT_EQ(trust_level, rrset_entry.getTrustLevel());
+}
+
 }   // namespace