summaryrefslogtreecommitdiffstats
path: root/src/Net/Listener.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Net/Listener.cpp')
-rw-r--r--src/Net/Listener.cpp24
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();
}