diff options
Diffstat (limited to 'src/Net/Listener.cpp')
-rw-r--r-- | src/Net/Listener.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/Net/Listener.cpp b/src/Net/Listener.cpp index 6187a1e..b3974d1 100644 --- a/src/Net/Listener.cpp +++ b/src/Net/Listener.cpp @@ -27,17 +27,9 @@ namespace Mad { namespace Net { void Listener::accept() { - boost::shared_ptr<Connection> con(new Connection(application)); - - con->context.set_options(boost::asio::ssl::context::default_workarounds - | boost::asio::ssl::context::no_sslv2 - | boost::asio::ssl::context::single_dh_use); - con->context.use_certificate_chain_file(x905CertFile); - con->context.use_private_key_file(x905KeyFile, boost::asio::ssl::context::pem); - - con->_initSocket(); + boost::shared_ptr<Connection> con(Connection::create(application, context)); - acceptor.async_accept(con->socket->lowest_layer(), boost::bind(&Listener::handleAccept, this, boost::asio::placeholders::error, con)); + acceptor.async_accept(con->socket.lowest_layer(), boost::bind(&Listener::handleAccept, this, boost::asio::placeholders::error, con)); } void Listener::handleAccept(const boost::system::error_code &error, boost::shared_ptr<Connection> con) { @@ -56,7 +48,7 @@ void Listener::handleAccept(const boost::system::error_code &error, boost::share connections.insert(std::make_pair(con, std::make_pair(con1, con2))); - con->socket->async_handshake(boost::asio::ssl::stream_base::server, boost::bind(&Connection::handleHandshake, con, boost::asio::placeholders::error)); + con->socket.async_handshake(boost::asio::ssl::stream_base::server, boost::bind(&Connection::handleHandshake, con, boost::asio::placeholders::error)); } accept(); @@ -89,7 +81,15 @@ void Listener::handleDisconnect(boost::shared_ptr<Connection> con) { Listener::Listener(Core::Application *application0, const std::string &x905CertFile0, const std::string &x905KeyFile0, const boost::asio::ip::tcp::endpoint &address0) throw(Core::Exception) : application(application0), x905CertFile(x905CertFile0), x905KeyFile(x905KeyFile0), address(address0), -acceptor(application->getIOService(), address), signal(application) { +context(new boost::asio::ssl::context(application->getIOService(), boost::asio::ssl::context::sslv23)), +acceptor(application->getIOService(), address), signal(application) +{ + context->set_options(boost::asio::ssl::context::default_workarounds + | boost::asio::ssl::context::no_sslv2 + | boost::asio::ssl::context::single_dh_use); + context->use_certificate_chain_file(x905CertFile); + context->use_private_key_file(x905KeyFile, boost::asio::ssl::context::pem); + accept(); } |