BIND 10 master, updated. faa93ae9523d13d57934fca02563d59793825b5a [master] Merge branch 'trac2160'
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Sep 5 10:04:43 UTC 2012
The branch, master has been updated
via faa93ae9523d13d57934fca02563d59793825b5a (commit)
via edeea1792d69930f2e2aa1d5621e286e868c294b (commit)
via 9514bc87016b23bb56f615bc2dcb5f8d8f778a51 (commit)
via f328475860c3e2d69ec002a58fdc49e95e54619d (commit)
from eedd7668751d8b5e3d47c8f233cf1d51e34ebd8e (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 faa93ae9523d13d57934fca02563d59793825b5a
Merge: eedd766 edeea17
Author: Jelte Jansen <jelte at isc.org>
Date: Wed Sep 5 11:47:05 2012 +0200
[master] Merge branch 'trac2160'
-----------------------------------------------------------------------
Summary of changes:
src/bin/auth/auth_srv.cc | 17 +++++++++++++++++
src/bin/auth/tests/auth_srv_unittest.cc | 7 +++----
src/lib/asiodns/sync_udp_server.cc | 8 ++++++--
3 files changed, 26 insertions(+), 6 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/auth/auth_srv.cc b/src/bin/auth/auth_srv.cc
index 9dbcf47..ddb7466 100644
--- a/src/bin/auth/auth_srv.cc
+++ b/src/bin/auth/auth_srv.cc
@@ -114,6 +114,18 @@ private:
MessageRenderer& renderer_;
};
+// Similar to Renderer holder, this is a very basic RAII-style class
+// that calls clear(Message::PARSE) on the given Message upon destruction
+class MessageHolder {
+public:
+ MessageHolder(Message& message) : message_(message) {}
+ ~MessageHolder() {
+ message_.clear(Message::PARSE);
+ }
+private:
+ Message& message_;
+};
+
// A helper container of socket session forwarder.
//
// This class provides a simple wrapper interface to SocketSessionForwarder
@@ -344,6 +356,11 @@ public:
OutputBufferPtr buffer,
DNSServer* server) const
{
+ // Keep a holder on the message, so that it is automatically
+ // cleared if processMessage() is done
+ // This is not done in processMessage itself (which would be
+ // equivalent), to allow tests to inspect the message handling.
+ MessageHolder message_holder(*message);
server_->processMessage(io_message, *message, *buffer, server);
}
private:
diff --git a/src/bin/auth/tests/auth_srv_unittest.cc b/src/bin/auth/tests/auth_srv_unittest.cc
index ca42473..e86cca4 100644
--- a/src/bin/auth/tests/auth_srv_unittest.cc
+++ b/src/bin/auth/tests/auth_srv_unittest.cc
@@ -104,10 +104,6 @@ protected:
}
~AuthSrvTest() {
- // Clear the message now; depending on the RTTI implementation,
- // type information may be lost if the message is cleared
- // automatically later, so as a precaution we do it now.
- parse_message->clear(Message::PARSE);
server.destroyDDNSForwarder();
}
@@ -833,6 +829,9 @@ TEST_F(AuthSrvTest, builtInQueryViaDNSServer) {
response_obuffer->getData(),
response_obuffer->getLength(),
&response_data[0], response_data.size());
+
+ // After it has been run, the message should be cleared
+ EXPECT_EQ(0, parse_message->getRRCount(Message::SECTION_QUESTION));
}
// In the following tests we confirm the response data is rendered in
diff --git a/src/lib/asiodns/sync_udp_server.cc b/src/lib/asiodns/sync_udp_server.cc
index a31301d..0c577f2 100644
--- a/src/lib/asiodns/sync_udp_server.cc
+++ b/src/lib/asiodns/sync_udp_server.cc
@@ -114,9 +114,13 @@ SyncUDPServer::handleRead(const asio::error_code& ec, const size_t length) {
return;
}
- // Make sure the buffers are fresh
+ // Make sure the buffers are fresh. Note that we don't touch query_
+ // because it's supposed to be cleared in lookup_callback_. We should
+ // eventually even remove this member variable (and remove it from
+ // the lookup_callback_ interface, but until then, any callback
+ // implementation should be careful that it's the responsibility of
+ // the callback implementation. See also #2239).
output_buffer_->clear();
- query_->clear(isc::dns::Message::PARSE);
answer_->clear(isc::dns::Message::RENDER);
// Mark that we don't have an answer yet.
More information about the bind10-changes
mailing list