[svn] commit: r1341 - /trunk/src/bin/auth/auth_srv.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Thu Mar 11 23:40:04 UTC 2010


Author: jinmei
Date: Thu Mar 11 23:40:04 2010
New Revision: 1341

Log:
make sure error responses are built from the scratch

Modified:
    trunk/src/bin/auth/auth_srv.cc

Modified: trunk/src/bin/auth/auth_srv.cc
==============================================================================
--- trunk/src/bin/auth/auth_srv.cc (original)
+++ trunk/src/bin/auth/auth_srv.cc Thu Mar 11 23:40:04 2010
@@ -93,14 +93,32 @@
     delete impl_;
 }
 
-static void
+namespace {
+void
 makeErrorMessage(Message& message, MessageRenderer& renderer,
                  const Rcode& rcode)
 {
-    message.makeResponse();
+    // extract the parameters that should be kept.
+    // XXX: with the current implementation, it's not easy to set EDNS0
+    // depending on whether the query had it.  So we'll simply omit it.
+    const qid_t qid = message.getQid();
+    const bool rd = message.getHeaderFlag(MessageFlag::RD());
+    const bool cd = message.getHeaderFlag(MessageFlag::CD());
+    const Opcode& opcode = message.getOpcode();
+
+    message.clear(Message::RENDER);
+    message.setQid(qid);
+    message.setOpcode(opcode);
+    message.setHeaderFlag(MessageFlag::QR());
+    if (rd) {
+        message.setHeaderFlag(MessageFlag::RD());
+    }
+    if (cd) {
+        message.setHeaderFlag(MessageFlag::CD());
+    }
     message.setRcode(rcode);
-    message.setUDPSize(4096);   // XXX: hardcoding
     message.toWire(renderer);
+}
 }
 
 int




More information about the bind10-changes mailing list