]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2013] (related bug fix) make Message::clearSection clear questions correctly.
authorJINMEI Tatuya <jinmei@isc.org>
Fri, 25 May 2012 23:27:31 +0000 (16:27 -0700)
committerJINMEI Tatuya <jinmei@isc.org>
Wed, 30 May 2012 23:34:01 +0000 (16:34 -0700)
this fix is necessary for ddns to make responses correctly.

src/lib/dns/message.cc
src/lib/dns/python/tests/message_python_test.py
src/lib/dns/tests/message_unittest.cc

index a9be8be75e7705c375c47318dbaec5fa2d4b33bd..0a1625a206a51d1b4d104d6f8002fab412137a7b 100644 (file)
@@ -573,7 +573,11 @@ Message::clearSection(const Section section) {
     if (section >= MessageImpl::NUM_SECTIONS) {
         isc_throw(OutOfRange, "Invalid message section: " << section);
     }
-    impl_->rrsets_[section].clear();
+    if (section == Message::SECTION_QUESTION) {
+        impl_->questions_.clear();
+    } else {
+        impl_->rrsets_[section].clear();
+    }
     impl_->counts_[section] = 0;
 }
 
index 1ec0e99c9d986541fcb31eaa1f3fae3cdd0d38d8..818ddd3f328f3286dbbba0ec47ba6caf02d9beb1 100644 (file)
@@ -295,6 +295,7 @@ class MessageTest(unittest.TestCase):
         self.assertEqual(1, self.r.get_rr_count(Message.SECTION_QUESTION))
         self.r.clear_section(Message.SECTION_QUESTION)
         self.assertEqual(0, self.r.get_rr_count(Message.SECTION_QUESTION))
+        self.assertEqual(0, len(self.r.get_question()))
 
     def test_clear_section(self):
         for section in [Message.SECTION_ANSWER, Message.SECTION_AUTHORITY,
index c5dd3eda3377a4fb4f66e42ac53c6aa71695ab4d..f30a2acf1239e44d406258f66ef70f23d988eac4 100644 (file)
@@ -406,6 +406,8 @@ TEST_F(MessageTest, clearQuestionSection) {
 
     message_render.clearSection(Message::SECTION_QUESTION);
     EXPECT_EQ(0, message_render.getRRCount(Message::SECTION_QUESTION));
+    EXPECT_TRUE(message_render.beginQuestion() ==
+                message_render.endQuestion());
 }