[svn] commit: r2410 - /branches/trac259/src/bin/auth/asio_link.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Jul 2 23:53:51 UTC 2010
Author: each
Date: Fri Jul 2 23:53:50 2010
New Revision: 2410
Log:
Some refactoring of asio_link.cc, and added logging when errors are
encountered.
Modified:
branches/trac259/src/bin/auth/asio_link.cc
Modified: branches/trac259/src/bin/auth/asio_link.cc
==============================================================================
--- branches/trac259/src/bin/auth/asio_link.cc (original)
+++ branches/trac259/src/bin/auth/asio_link.cc Fri Jul 2 23:53:50 2010
@@ -127,67 +127,74 @@
void headerRead(const asio::error_code& error,
size_t bytes_transferred)
{
- if (!error) {
- InputBuffer dnsbuffer(data_, bytes_transferred);
-
- uint16_t msglen = dnsbuffer.readUint16();
- async_read(socket_, asio::buffer(data_, msglen),
-
- boost::bind(&TCPClient::requestRead, this,
- placeholders::error,
- placeholders::bytes_transferred));
- } else {
+ if (error) {
+ cout << "[b10-auth] Header read failure: "
+ << error.message() << endl;
delete this;
- }
+ return;
+ }
+
+ InputBuffer dnsbuffer(data_, bytes_transferred);
+ uint16_t msglen = dnsbuffer.readUint16();
+ async_read(socket_, asio::buffer(data_, msglen),
+ boost::bind(&TCPClient::requestRead, this,
+ placeholders::error,
+ placeholders::bytes_transferred));
}
void requestRead(const asio::error_code& error,
size_t bytes_transferred)
{
- if (!error) {
- InputBuffer dnsbuffer(data_, bytes_transferred);
- if (check_axfr_query(data_, bytes_transferred)) {
- dispatch_axfr_query(socket_.native(), data_, bytes_transferred);
- // start to get new query ?
- start();
+ if (error) {
+ cout << "[b10-auth] Message read failure: "
+ << error.message() << endl;
+ delete this;
+ return;
+ }
+
+ InputBuffer dnsbuffer(data_, bytes_transferred);
+ if (check_axfr_query(data_, bytes_transferred)) {
+ dispatch_axfr_query(socket_.native(), data_, bytes_transferred);
+ // start to get new query ?
+ start();
+ } else {
+ if (auth_server_->processMessage(dnsbuffer, dns_message_,
+ response_renderer_, false))
+ {
+ responselen_buffer_.writeUint16(response_buffer_.getLength());
+ async_write(socket_,
+ asio::buffer(responselen_buffer_.getData(),
+ responselen_buffer_.getLength()),
+ boost::bind(&TCPClient::responseWrite, this,
+ placeholders::error));
} else {
- if (auth_server_->processMessage(dnsbuffer, dns_message_,
- response_renderer_, false)) {
- responselen_buffer_.writeUint16(
- response_buffer_.getLength());
- async_write(socket_,
- asio::buffer(
- responselen_buffer_.getData(),
- responselen_buffer_.getLength()),
- boost::bind(&TCPClient::responseWrite, this,
- placeholders::error));
- } else {
- delete this;
- }
+ delete this;
}
- } else {
+ }
+ }
+
+ void responseWrite(const asio::error_code& error) {
+ if (error) {
+ cout << "[b10-auth] Response failure: " << error.message() << endl;
delete this;
- }
- }
-
- void responseWrite(const asio::error_code& error) {
- if (!error) {
- async_write(socket_,
- asio::buffer(response_buffer_.getData(),
- response_buffer_.getLength()),
- boost::bind(&TCPClient::handleWrite, this,
- placeholders::error));
- } else {
+ return;
+ }
+
+ async_write(socket_,
+ asio::buffer(response_buffer_.getData(),
+ response_buffer_.getLength()),
+ boost::bind(&TCPClient::handleWrite, this,
+ placeholders::error));
+ }
+
+ void handleWrite(const asio::error_code& error) {
+ if (error) {
+ cout << "[b10-auth] Write failure: " << error.message() << endl;
delete this;
- }
- }
-
- void handleWrite(const asio::error_code& error) {
- if (!error) {
- start(); // handle next request, if any.
- } else {
- delete this;
- }
+ return;
+ }
+
+ start(); // handle next request, if any.
}
private:
@@ -247,17 +254,19 @@
void handleAccept(TCPClient* new_client,
const asio::error_code& error)
{
- if (!error) {
- assert(new_client == listening_);
- new_client->start();
- listening_ = new TCPClient(auth_server_, io_service_);
- acceptor_.async_accept(listening_->getSocket(),
- boost::bind(&TCPServer::handleAccept,
- this, listening_,
- placeholders::error));
- } else {
+ if (error) {
+ cout << "[b10-auth] Accept failure: " << error.message() << endl;
delete new_client;
- }
+ return;
+ }
+
+ assert(new_client == listening_);
+ new_client->start();
+ listening_ = new TCPClient(auth_server_, io_service_);
+ acceptor_.async_accept(listening_->getSocket(),
+ boost::bind(&TCPServer::handleAccept,
+ this, listening_,
+ placeholders::error));
}
private:
@@ -308,24 +317,33 @@
if (auth_server_->configSession()->hasQueuedMsgs()) {
auth_server_->configSession()->checkCommand();
}
- if (!error && bytes_recvd > 0) {
- InputBuffer request_buffer(data_, bytes_recvd);
-
- dns_message_.clear(Message::PARSE);
- response_renderer_.clear();
- if (auth_server_->processMessage(request_buffer, dns_message_,
- response_renderer_, true)) {
- socket_.async_send_to(
- asio::buffer(response_buffer_.getData(),
- response_buffer_.getLength()),
- sender_endpoint_,
- boost::bind(&UDPServer::sendCompleted,
- this,
- placeholders::error,
- placeholders::bytes_transferred));
- } else {
- startReceive();
- }
+
+ if (error) {
+ cout << "[b10-auth] Request failure: " << error.message() << endl;
+ startReceive();
+ return;
+ }
+
+ if (bytes_recvd == 0) {
+ cout << "[b10-auth] Request failure: 0 bytes read" << endl;
+ startReceive();
+ return;
+ }
+
+ InputBuffer request_buffer(data_, bytes_recvd);
+
+ dns_message_.clear(Message::PARSE);
+ response_renderer_.clear();
+ if (auth_server_->processMessage(request_buffer, dns_message_,
+ response_renderer_, true))
+ {
+ socket_.async_send_to(asio::buffer(response_buffer_.getData(),
+ response_buffer_.getLength()),
+ sender_endpoint_,
+ boost::bind(&UDPServer::sendCompleted,
+ this,
+ placeholders::error,
+ placeholders::bytes_transferred));
} else {
startReceive();
}
More information about the bind10-changes
mailing list