summaryrefslogtreecommitdiff
path: root/src/components/connection_handler/src/connection_handler_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/connection_handler/src/connection_handler_impl.cc')
-rw-r--r--src/components/connection_handler/src/connection_handler_impl.cc34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc
index 4521f52cbb..550eb236d6 100644
--- a/src/components/connection_handler/src/connection_handler_impl.cc
+++ b/src/components/connection_handler/src/connection_handler_impl.cc
@@ -358,14 +358,10 @@ uint32_t ConnectionHandlerImpl::OnSessionStartedCallback(
return new_session_id;
}
-void ConnectionHandlerImpl::OnApplicationFloodCallBack(const uint32_t &connection_key) {
+void ConnectionHandlerImpl::OnApplicationFloodCallBack(
+ const uint32_t &connection_key) {
LOG4CXX_AUTO_TRACE(logger_);
- {
- sync_primitives::AutoLock lock(connection_handler_observer_lock_);
- if(connection_handler_observer_) {
- connection_handler_observer_->OnApplicationFloodCallBack(connection_key);
- }
- }
+
transport_manager::ConnectionUID connection_handle = 0;
uint8_t session_id = 0;
PairFromKey(connection_key, &connection_handle, &session_id);
@@ -379,14 +375,10 @@ void ConnectionHandlerImpl::OnApplicationFloodCallBack(const uint32_t &connectio
}
}
-void ConnectionHandlerImpl::OnMalformedMessageCallback(const uint32_t &connection_key) {
+void ConnectionHandlerImpl::OnMalformedMessageCallback(
+ const uint32_t &connection_key) {
LOG4CXX_AUTO_TRACE(logger_);
- {
- sync_primitives::AutoLock lock(connection_handler_observer_lock_);
- if(connection_handler_observer_) {
- connection_handler_observer_->OnMalformedMessageCallback(connection_key);
- }
- }
+
transport_manager::ConnectionUID connection_handle = 0;
uint8_t session_id = 0;
PairFromKey(connection_key, &connection_handle, &session_id);
@@ -444,7 +436,7 @@ uint32_t ConnectionHandlerImpl::OnSessionEndedCallback(
sync_primitives::AutoLock lock2(connection_handler_observer_lock_);
if (connection_handler_observer_) {
connection_handler_observer_->OnServiceEndedCallback(
- session_key, service_type, CloseSessionReason::kCommon);
+ session_key, service_type, CloseSessionReason::kCommon);
}
return session_key;
}
@@ -765,6 +757,12 @@ void ConnectionHandlerImpl::CloseSession(ConnectionHandle connection_handle,
LOG4CXX_AUTO_TRACE(logger_);
LOG4CXX_DEBUG(logger_, "Closing session with id: " << session_id);
+ // In case of malformed message the connection should be broke up without
+ // any other notification to mobile.
+ if (close_reason != kMalformed && protocol_handler_) {
+ protocol_handler_->SendEndSession(connection_handle, session_id);
+ }
+
transport_manager::ConnectionUID connection_id =
ConnectionUIDFromHandle(connection_handle);
@@ -775,9 +773,7 @@ void ConnectionHandlerImpl::CloseSession(ConnectionHandle connection_handle,
ConnectionList::iterator connection_list_itr =
connection_list_.find(connection_id);
if (connection_list_.end() != connection_list_itr) {
- if (connection_handler_observer_ && kCommon == close_reason) {
- session_map = connection_list_itr->second->session_map();
- }
+ session_map = connection_list_itr->second->session_map();
connection_list_itr->second->RemoveSession(session_id);
} else {
LOG4CXX_ERROR(logger_, "Connection with id: " << connection_id
@@ -935,7 +931,7 @@ void ConnectionHandlerImpl::OnConnectionEnded(
for (ServiceList::const_iterator service_it = service_list.begin(), end =
service_list.end(); service_it != end; ++service_it) {
connection_handler_observer_->OnServiceEndedCallback(
- session_key, service_it->service_type, CloseSessionReason::kCommon);
+ session_key, service_it->service_type, CloseSessionReason::kCommon);
}
}
}