From 5a17a42bfd22e3588c562b097f9ce8f7dd966583 Mon Sep 17 00:00:00 2001 From: Andriy Byzhynar Date: Wed, 20 Dec 2017 16:32:22 +0200 Subject: Fix wrong connection closure Removed connection closure in case of last session in the connection was closed. All connections should be removed when device would be unplugged. --- src/components/connection_handler/src/connection.cc | 7 ------- src/components/connection_handler/src/heartbeat_monitor.cc | 12 +++++++----- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/components/connection_handler/src/connection.cc b/src/components/connection_handler/src/connection.cc index 16b88c4164..6bed3e96bc 100644 --- a/src/components/connection_handler/src/connection.cc +++ b/src/components/connection_handler/src/connection.cc @@ -346,7 +346,6 @@ const SessionMap Connection::session_map() const { } void Connection::CloseSession(uint8_t session_id) { - size_t size; { sync_primitives::AutoLock lock(session_map_lock_); @@ -354,16 +353,10 @@ void Connection::CloseSession(uint8_t session_id) { if (session_it == session_map_.end()) { return; } - size = session_map_.size(); } connection_handler_->CloseSession( connection_handle_, session_id, connection_handler::kCommon); - - // Close connection if it is last session - if (1 == size) { - connection_handler_->CloseConnection(connection_handle_); - } } void Connection::UpdateProtocolVersionSession(uint8_t session_id, diff --git a/src/components/connection_handler/src/heartbeat_monitor.cc b/src/components/connection_handler/src/heartbeat_monitor.cc index f3a2322810..6172f63ca8 100644 --- a/src/components/connection_handler/src/heartbeat_monitor.cc +++ b/src/components/connection_handler/src/heartbeat_monitor.cc @@ -90,18 +90,20 @@ void HeartBeatMonitor::threadMain() { } void HeartBeatMonitor::AddSession(uint8_t session_id) { - LOG4CXX_DEBUG(logger_, - "Add session with id " << static_cast(session_id)); + const uint32_t converted_session_id = static_cast(session_id); + UNUSED(converted_session_id); + LOG4CXX_DEBUG(logger_, "Add session with id " << converted_session_id); AutoLock auto_lock(sessions_list_lock_); if (sessions_.end() != sessions_.find(session_id)) { LOG4CXX_WARN(logger_, - "Session with id " << static_cast(session_id) - << " already exists"); + "Session with id: " << converted_session_id + << " already exists"); return; } sessions_.insert( std::make_pair(session_id, SessionState(default_heartbeat_timeout_))); - LOG4CXX_INFO(logger_, "Start heartbeat for session " << session_id); + LOG4CXX_INFO(logger_, + "Start heartbeat for session: " << converted_session_id); } void HeartBeatMonitor::RemoveSession(uint8_t session_id) { -- cgit v1.2.1