From: JINMEI Tatuya Date: Fri, 25 May 2012 23:27:31 +0000 (-0700) Subject: [2013] (related bug fix) make Message::clearSection clear questions correctly. X-Git-Tag: trac2351_base~226^2~60^2^2~2^2~20 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2f88c7ad45869921177bf4dcc477dbdd87c8cda6;p=thirdparty%2Fkea.git [2013] (related bug fix) make Message::clearSection clear questions correctly. this fix is necessary for ddns to make responses correctly. --- diff --git a/src/lib/dns/message.cc b/src/lib/dns/message.cc index a9be8be75e..0a1625a206 100644 --- a/src/lib/dns/message.cc +++ b/src/lib/dns/message.cc @@ -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; } diff --git a/src/lib/dns/python/tests/message_python_test.py b/src/lib/dns/python/tests/message_python_test.py index 1ec0e99c9d..818ddd3f32 100644 --- a/src/lib/dns/python/tests/message_python_test.py +++ b/src/lib/dns/python/tests/message_python_test.py @@ -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, diff --git a/src/lib/dns/tests/message_unittest.cc b/src/lib/dns/tests/message_unittest.cc index c5dd3eda33..f30a2acf12 100644 --- a/src/lib/dns/tests/message_unittest.cc +++ b/src/lib/dns/tests/message_unittest.cc @@ -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()); }