diff options
Diffstat (limited to 'server/src/server.cpp')
-rw-r--r-- | server/src/server.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/server/src/server.cpp b/server/src/server.cpp index 9eb44f4..3c769d3 100644 --- a/server/src/server.cpp +++ b/server/src/server.cpp @@ -1,5 +1,5 @@ /* - Copyright © 2015 Gluzskiy Alexandr (sss) + Copyright © 2015-2016 Gluzskiy Alexandr (sss) This file is part of Unknown Download Manager (UDM). @@ -28,6 +28,8 @@ #include "../../protocol/udm.pb.h" #include "socket_wraper.h" +extern std::list<server_session*> sessions; + @@ -49,6 +51,7 @@ server::server(boost::asio::io_service& io_service,runtime_config_s &config, std void server::start_accept() { server_session* new_session = new server_session(io_service_, runtime_config, clients, downloads); + sessions.push_back(new_session); if(runtime_config.config_file.get<bool>("server.enable_encryption", false)) acceptor_.async_accept(new_session->socket()->get_ssl_socket().lowest_layer(), boost::bind(&server::handle_accept, this, new_session, boost::asio::placeholders::error)); else @@ -63,6 +66,10 @@ void server::handle_accept(server_session* new_session, const boost::system::err } else { + //TODO: implement thread safety ? + auto s = std::find(sessions.begin(), sessions.end(), new_session); + if(s != sessions.end()) + sessions.erase(s); delete new_session; } start_accept(); |