diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2016-01-16 09:01:18 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2016-01-16 09:01:18 +0300 |
commit | bb8cd8a9ff7d80046cc2c7d41742c74d8f811c62 (patch) | |
tree | 9353ecb0293fd89b8d08d893332ca7e912c3efa3 /server/src/server.cpp | |
parent | 454ed688836c9de52039b84ea381ffd22890a6e8 (diff) |
i am alive )
updated copyrights (new year)
server:
started implementation of api for module events (module should be able to fire event which will be delivered to clients which have subscribed for this event type)
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(); |