From: Yoshitaka Aharen Date: Tue, 11 Dec 2012 07:57:46 +0000 (+0900) Subject: [2157] declare MessageAttributes as temporary variable X-Git-Tag: bind10-1.1.0beta1-release~85^2~5^2~78 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2afe3383ec01875950b489b7702b2ec2c3281d64;p=thirdparty%2Fkea.git [2157] declare MessageAttributes as temporary variable --- diff --git a/src/bin/auth/auth_srv.cc b/src/bin/auth/auth_srv.cc index a9ea5ac6f5..3d822dfd1b 100644 --- a/src/bin/auth/auth_srv.cc +++ b/src/bin/auth/auth_srv.cc @@ -272,9 +272,6 @@ public: std::map > client_lists_; - /// Message attributes - MessageAttributes stats_attrs_; - boost::shared_ptr 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); } diff --git a/src/bin/auth/statistics.h b/src/bin/auth/statistics.h index 929b2d25ac..52419326b2 100644 --- a/src/bin/auth/statistics.h +++ b/src/bin/auth/statistics.h @@ -57,9 +57,10 @@ public: /// \brief The constructor. /// /// \throw None - MessageAttributes() : req_opcode_(Opcode::RESERVED15_CODE) { - reset(); - } + MessageAttributes() : req_ip_version_(0), req_transport_protocol_(0), + req_opcode_(Opcode::RESERVED15_CODE), + bit_attributes_() + {} /// \brief Get request opcode. /// \return opcode of a request @@ -168,15 +169,6 @@ public: void setResponseTruncated(const bool is_truncated) { bit_attributes_[RES_IS_TRUNCATED] = is_truncated; } - - /// \brief Reset attributes. - /// \throw None - void reset() { - req_ip_version_ = 0; - req_transport_protocol_ = 0; - req_opcode_ = Opcode(Opcode::RESERVED15_CODE); - bit_attributes_.reset(); - } }; /// \brief Set of DNS message counters.