std::map<RRClass, boost::shared_ptr<ConfigurableClientList> >
client_lists_;
- /// Message attributes
- MessageAttributes stats_attrs_;
-
boost::shared_ptr<ConfigurableClientList> getClientList(const RRClass&
rrclass)
{
/// 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:
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,
// 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;
}
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.
**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;
}
// 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,
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
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);
}