Mercurial > irccd
changeset 547:a95954e53589
Irccd: fix TLS tranports
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 22 Nov 2017 20:01:05 +0100 |
parents | fd96de07657a |
children | a7c0eb100760 |
files | libirccd/irccd/transport_server.cpp libirccd/irccd/transport_server.hpp libirccdctl/irccd/ctl/ip_connection.cpp |
diffstat | 3 files changed, 11 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd/irccd/transport_server.cpp Wed Nov 22 19:32:56 2017 +0100 +++ b/libirccd/irccd/transport_server.cpp Wed Nov 22 20:01:05 2017 +0100 @@ -99,13 +99,10 @@ #if defined(HAVE_SSL) -void tls_transport_server::do_handshake(std::shared_ptr<tls_transport_client> client, accept_t handler) +void tls_transport_server::do_handshake(std::shared_ptr<client_t> client, accept_t handler) { - client->socket().async_handshake(boost::asio::ssl::stream_base::server, [client, handler] (auto code) { - if (code) - handler(nullptr, code); - else - handler(std::move(client), std::move(code)); + client->stream().socket().async_handshake(boost::asio::ssl::stream_base::server, [client, handler] (auto code) { + handler(std::move(code), std::move(client)); }); } @@ -117,11 +114,11 @@ void tls_transport_server::do_accept(accept_t handler) { - auto client = std::make_shared<tls_transport_client>(*this, acceptor_.get_io_service(), context_); + auto client = std::make_shared<client_t>(*this, acceptor_.get_io_service(), context_); - acceptor_.async_accept(client->socket().lowest_layer(), [this, client, handler] (auto code) { + acceptor_.async_accept(client->stream().socket().lowest_layer(), [this, client, handler] (auto code) { if (code) - handler(nullptr, code); + handler(std::move(code), nullptr); else do_handshake(std::move(client), std::move(handler)); });
--- a/libirccd/irccd/transport_server.hpp Wed Nov 22 19:32:56 2017 +0100 +++ b/libirccd/irccd/transport_server.hpp Wed Nov 22 20:01:05 2017 +0100 @@ -216,13 +216,13 @@ * \brief Secure layer implementation. */ class tls_transport_server : public tcp_transport_server { -public: +private: using context_t = boost::asio::ssl::context; + using client_t = basic_transport_client<boost::asio::ssl::stream<socket_t>>; -private: context_t context_; - void do_handshake(std::shared_ptr<tls_transport_client>, accept_t); + void do_handshake(std::shared_ptr<client_t>, accept_t); protected: /**
--- a/libirccdctl/irccd/ctl/ip_connection.cpp Wed Nov 22 19:32:56 2017 +0100 +++ b/libirccdctl/irccd/ctl/ip_connection.cpp Wed Nov 22 20:01:05 2017 +0100 @@ -66,14 +66,14 @@ void tls_connection::handshake(connect_t handler) { - socket_.async_handshake(boost::asio::ssl::stream_base::client, [handler] (auto code) { + stream_.socket().async_handshake(boost::asio::ssl::stream_base::client, [handler] (auto code) { handler(code); }); } void tls_connection::connect(connect_t handler) { - do_resolve(host_, std::to_string(port_), socket_.lowest_layer(), resolver_, [handler, this] (auto code) { + do_resolve(host_, std::to_string(port_), stream_.socket().lowest_layer(), resolver_, [handler, this] (auto code) { if (code) handler(code); else