aboutsummaryrefslogtreecommitdiff
path: root/libcmix-network/server.cpp
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-09-29 14:26:07 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2016-09-29 14:26:07 +0200
commit8507aec59b92e16ed6a05c92fea6ced5dba3f753 (patch)
treeb8ae5904f74c9896ccc6662837e628400d47b829 /libcmix-network/server.cpp
parent3fe7a5b6a18b6841ae51f294dc58fe9c8df6d375 (diff)
downloadcmix-8507aec59b92e16ed6a05c92fea6ced5dba3f753.tar.gz
cmix-8507aec59b92e16ed6a05c92fea6ced5dba3f753.tar.bz2
cmix-8507aec59b92e16ed6a05c92fea6ced5dba3f753.zip
Added some boilerplate to enable ssl connections.
Diffstat (limited to 'libcmix-network/server.cpp')
-rw-r--r--libcmix-network/server.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/libcmix-network/server.cpp b/libcmix-network/server.cpp
index cb2bd34..8dabecb 100644
--- a/libcmix-network/server.cpp
+++ b/libcmix-network/server.cpp
@@ -3,7 +3,7 @@
using namespace boost::asio::ip;
using namespace boost::asio;
-Server::Server(io_service& io_service, const ListenSettings& listen_settings, AcceptHandler accept_handler)
+Server::Server(io_service& io_service, const ListenSettings& listen_settings)
: listen_settings(listen_settings)
, v4_acceptor(io_service, address_v4::from_string(listen_settings.ipv4_inaddr), listen_settings.port)
, v6_acceptor(io_service, address_v6::from_string(listen_settings.ipv6_inaddr), listen_settings.port)
@@ -16,16 +16,39 @@ Server::Server(io_service& io_service, const ListenSettings& listen_settings, Ac
*/
bool bind_v4_any = v4_acceptor.get_address().to_v4() == address_v4::any() && listen_settings.enable_ipv4;
bool bind_v6_any = v6_acceptor.get_address().to_v6() == address_v6::any() && listen_settings.enable_ipv6;
+
if(bind_v4_any && bind_v6_any) {
- v6_acceptor.bind_v6_and_v4_any(accept_handler);
+ v6_acceptor.listen_v6_and_v4_any();
} else if(bind_v4_any || bind_v6_any) {
throw std::runtime_error("Cannot bind an INADDR_ANY and a non INADDR_ANY address on ipv4 and ipv6");
} else {
if(listen_settings.enable_ipv4) {
- v4_acceptor.setup_listen_socket(accept_handler);
+ v4_acceptor.listen_socket();
}
if(listen_settings.enable_ipv6) {
- v6_acceptor.setup_listen_socket(accept_handler);
+ v6_acceptor.listen_socket();
}
}
+}
+
+Server::Server(io_service& io_service, const ListenSettings& listen_settings, AcceptHandler accept_handler)
+: Server(io_service, listen_settings)
+{
+ if(v4_acceptor.is_open()) {
+ v4_acceptor.start_accepting(accept_handler);
+ }
+ if(v6_acceptor.is_open()) {
+ v6_acceptor.start_accepting(accept_handler);
+ }
+}
+
+Server::Server(io_service& io_service, const ListenSettings& listen_settings, std::shared_ptr<ssl::context> ctx, SSLAcceptHandler accept_handler)
+: Server(io_service, listen_settings)
+{
+ if(v4_acceptor.is_open()) {
+ v4_acceptor.start_accepting(ctx, accept_handler);
+ }
+ if(v6_acceptor.is_open()) {
+ v6_acceptor.start_accepting(ctx, accept_handler);
+ }
} \ No newline at end of file