[svn] commit: r1524 - /trunk/src/bin/auth/main.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Mar 18 17:57:56 UTC 2010
Author: jinmei
Date: Thu Mar 18 17:57:56 2010
New Revision: 1524
Log:
make sure TCPServer() listens before accepting.
(with additional cleanup: removed unnecessary UNUSED_PARAM, minimize the use
of temporary varaibles)
Modified:
trunk/src/bin/auth/main.cc
Modified: trunk/src/bin/auth/main.cc
==============================================================================
--- trunk/src/bin/auth/main.cc (original)
+++ trunk/src/bin/auth/main.cc Thu Mar 18 17:57:56 2010
@@ -199,20 +199,18 @@
class TCPServer {
public:
TCPServer(io_service& io_service, int af, short port) :
- io_service_(io_service),
- acceptor_(io_service, af == AF_INET6 ? tcp::v6() : tcp::v4()),
+ io_service_(io_service), acceptor_(io_service_),
listening_(new TCPClient(io_service_))
{
+ tcp::endpoint endpoint(af == AF_INET6 ? tcp::v6() : tcp::v4(), port);
+ acceptor_.open(endpoint.protocol());
// Set v6-only (we use a different instantiation for v4,
// otherwise asio will bind to both v4 and v6
if (af == AF_INET6) {
- boost::asio::ip::v6_only option(true);
- acceptor_.set_option(option);
- acceptor_.bind(tcp::endpoint(tcp::v6(), port));
- } else {
- acceptor_.bind(tcp::endpoint(tcp::v4(), port));
- }
- // XXX: isn't the following exception free? Need to check it.
+ acceptor_.set_option(boost::asio::ip::v6_only(true));
+ }
+ acceptor_.bind(endpoint);
+ acceptor_.listen();
acceptor_.async_accept(listening_->getSocket(),
boost::bind(&TCPServer::handleAccept, this,
listening_, placeholders::error));
@@ -244,7 +242,7 @@
class UDPServer {
public:
- UDPServer(io_service& io_service, int af UNUSED_PARAM, short port UNUSED_PARAM) :
+ UDPServer(io_service& io_service, int af, short port) :
io_service_(io_service),
socket_(io_service, af == AF_INET6 ? udp::v6() : udp::v4()),
response_buffer_(0),
@@ -254,8 +252,7 @@
// Set v6-only (we use a different instantiation for v4,
// otherwise asio will bind to both v4 and v6
if (af == AF_INET6) {
- boost::asio::ip::v6_only option(true);
- socket_.set_option(option);
+ socket_.set_option(boost::asio::ip::v6_only(true));
socket_.bind(udp::endpoint(udp::v6(), port));
} else {
socket_.bind(udp::endpoint(udp::v4(), port));
More information about the bind10-changes
mailing list