|
@@ -272,9 +272,6 @@ public:
|
|
|
std::map<RRClass, boost::shared_ptr<ConfigurableClientList> >
|
|
|
client_lists_;
|
|
|
|
|
|
- /// Message attributes
|
|
|
- MessageAttributes stats_attrs_;
|
|
|
-
|
|
|
boost::shared_ptr<ConfigurableClientList> getClientList(const RRClass&
|
|
|
rrclass)
|
|
|
{
|
|
@@ -308,6 +305,7 @@ public:
|
|
|
/// this value will be passed to server->resume(bool)
|
|
|
void resumeServer(isc::asiodns::DNSServer* server,
|
|
|
isc::dns::Message& message,
|
|
|
+ MessageAttributes& stats_attrs,
|
|
|
const bool done);
|
|
|
|
|
|
private:
|
|
@@ -493,10 +491,11 @@ AuthSrv::processMessage(const IOMessage& io_message, Message& message,
|
|
|
OutputBuffer& buffer, DNSServer* server)
|
|
|
{
|
|
|
InputBuffer request_buffer(io_message.getData(), io_message.getDataSize());
|
|
|
+ MessageAttributes stats_attrs;
|
|
|
|
|
|
- impl_->stats_attrs_.setRequestIPVersion(
|
|
|
+ stats_attrs.setRequestIPVersion(
|
|
|
io_message.getRemoteEndpoint().getFamily());
|
|
|
- impl_->stats_attrs_.setRequestTransportProtocol(
|
|
|
+ stats_attrs.setRequestTransportProtocol(
|
|
|
io_message.getRemoteEndpoint().getProtocol());
|
|
|
|
|
|
// First, check the header part. If we fail even for the base header,
|
|
@@ -507,13 +506,13 @@ AuthSrv::processMessage(const IOMessage& io_message, Message& message,
|
|
|
// Ignore all responses.
|
|
|
if (message.getHeaderFlag(Message::HEADERFLAG_QR)) {
|
|
|
LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_RESPONSE_RECEIVED);
|
|
|
- impl_->resumeServer(server, message, false);
|
|
|
+ impl_->resumeServer(server, message, stats_attrs, false);
|
|
|
return;
|
|
|
}
|
|
|
} catch (const Exception& ex) {
|
|
|
LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_HEADER_PARSE_FAIL)
|
|
|
.arg(ex.what());
|
|
|
- impl_->resumeServer(server, message, false);
|
|
|
+ impl_->resumeServer(server, message, stats_attrs, false);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -524,13 +523,13 @@ AuthSrv::processMessage(const IOMessage& io_message, Message& message,
|
|
|
LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_PACKET_PROTOCOL_ERROR)
|
|
|
.arg(error.getRcode().toText()).arg(error.what());
|
|
|
makeErrorMessage(impl_->renderer_, message, buffer, error.getRcode());
|
|
|
- impl_->resumeServer(server, message, true);
|
|
|
+ impl_->resumeServer(server, message, stats_attrs, true);
|
|
|
return;
|
|
|
} catch (const Exception& ex) {
|
|
|
LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_PACKET_PARSE_ERROR)
|
|
|
.arg(ex.what());
|
|
|
makeErrorMessage(impl_->renderer_, message, buffer, Rcode::SERVFAIL());
|
|
|
- impl_->resumeServer(server, message, true);
|
|
|
+ impl_->resumeServer(server, message, stats_attrs, true);
|
|
|
return;
|
|
|
} // other exceptions will be handled at a higher layer.
|
|
|
|
|
@@ -553,14 +552,13 @@ AuthSrv::processMessage(const IOMessage& io_message, Message& message,
|
|
|
**impl_->keyring_));
|
|
|
tsig_error = tsig_context->verify(tsig_record, io_message.getData(),
|
|
|
io_message.getDataSize());
|
|
|
- impl_->stats_attrs_.setRequestSig(true,
|
|
|
- tsig_error != TSIGError::NOERROR());
|
|
|
+ stats_attrs.setRequestSig(true, tsig_error != TSIGError::NOERROR());
|
|
|
}
|
|
|
|
|
|
if (tsig_error != TSIGError::NOERROR()) {
|
|
|
makeErrorMessage(impl_->renderer_, message, buffer,
|
|
|
tsig_error.toRcode(), tsig_context);
|
|
|
- impl_->resumeServer(server, message, true);
|
|
|
+ impl_->resumeServer(server, message, stats_attrs, true);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -570,12 +568,12 @@ AuthSrv::processMessage(const IOMessage& io_message, Message& message,
|
|
|
// note: This can only be reliable after TSIG check succeeds.
|
|
|
ConstEDNSPtr edns = message.getEDNS();
|
|
|
if (edns) {
|
|
|
- impl_->stats_attrs_.setRequestEDNS0(true);
|
|
|
- impl_->stats_attrs_.setRequestDO(edns->getDNSSECAwareness());
|
|
|
+ stats_attrs.setRequestEDNS0(true);
|
|
|
+ stats_attrs.setRequestDO(edns->getDNSSECAwareness());
|
|
|
}
|
|
|
|
|
|
// note: This can only be reliable after TSIG check succeeds.
|
|
|
- impl_->stats_attrs_.setRequestOpCode(opcode);
|
|
|
+ stats_attrs.setRequestOpCode(opcode);
|
|
|
|
|
|
if (opcode == Opcode::NOTIFY()) {
|
|
|
send_answer = impl_->processNotify(io_message, message, buffer,
|
|
@@ -618,7 +616,7 @@ AuthSrv::processMessage(const IOMessage& io_message, Message& message,
|
|
|
LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_RESPONSE_FAILURE_UNKNOWN);
|
|
|
makeErrorMessage(impl_->renderer_, message, buffer, Rcode::SERVFAIL());
|
|
|
}
|
|
|
- impl_->resumeServer(server, message, send_answer);
|
|
|
+ impl_->resumeServer(server, message, stats_attrs, send_answer);
|
|
|
}
|
|
|
|
|
|
bool
|
|
@@ -812,13 +810,13 @@ AuthSrvImpl::processUpdate(const IOMessage& io_message) {
|
|
|
|
|
|
void
|
|
|
AuthSrvImpl::resumeServer(DNSServer* server, Message& message,
|
|
|
+ MessageAttributes& stats_attrs,
|
|
|
const bool done) {
|
|
|
if (done) {
|
|
|
// isTruncated from MessageRenderer
|
|
|
- stats_attrs_.setResponseTruncated(renderer_.isTruncated());
|
|
|
+ stats_attrs.setResponseTruncated(renderer_.isTruncated());
|
|
|
}
|
|
|
- counters_.inc(stats_attrs_, message, done);
|
|
|
- stats_attrs_.reset();
|
|
|
+ counters_.inc(stats_attrs, message, done);
|
|
|
server->resume(done);
|
|
|
}
|
|
|
|