From c0ae93ef89de99ba5e3f7b99fd6ba471c30f160c Mon Sep 17 00:00:00 2001 From: dcherniev Date: Tue, 29 Nov 2016 17:24:00 +0200 Subject: Fix issue of TransportManager UT Moved initialization of info.connection field right after connection was created. Added check if DisconnectDevice method would try to send Disconnect to invalid connection. Related to: APPLINK-30284 --- .../src/bluetooth/bluetooth_connection_factory.cc | 2 ++ .../transport_manager/src/tcp/tcp_connection_factory.cc | 2 ++ .../src/transport_adapter/threaded_socket_connection.cc | 1 - .../src/transport_adapter/transport_adapter_impl.cc | 8 +++++--- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc b/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc index bb27493701..8b31ca8145 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_connection_factory.cc @@ -59,6 +59,8 @@ TransportAdapter::Error BluetoothConnectionFactory::CreateConnection( << ", app_handle: " << &app_handle); BluetoothSocketConnection* connection( new BluetoothSocketConnection(device_uid, app_handle, controller_)); + controller_->ConnectionCreated(connection, device_uid, app_handle); + TransportAdapter::Error error = connection->Start(); if (TransportAdapter::OK != error) { LOG4CXX_ERROR(logger_, "connection::Start() failed"); diff --git a/src/components/transport_manager/src/tcp/tcp_connection_factory.cc b/src/components/transport_manager/src/tcp/tcp_connection_factory.cc index 5b1e9af6cb..8a0751417f 100644 --- a/src/components/transport_manager/src/tcp/tcp_connection_factory.cc +++ b/src/components/transport_manager/src/tcp/tcp_connection_factory.cc @@ -57,6 +57,8 @@ TransportAdapter::Error TcpConnectionFactory::CreateConnection( TcpServerOiginatedSocketConnection* connection( new TcpServerOiginatedSocketConnection( device_uid, app_handle, controller_)); + controller_->ConnectionCreated(connection, device_uid, app_handle); + if (connection->Start() == TransportAdapter::OK) { LOG4CXX_DEBUG(logger_, "TCP connection initialised"); return TransportAdapter::OK; diff --git a/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc b/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc index 5e9f3d941d..63cfb3ea51 100644 --- a/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc +++ b/src/components/transport_manager/src/transport_adapter/threaded_socket_connection.cc @@ -162,7 +162,6 @@ TransportAdapter::Error ThreadedSocketConnection::Disconnect() { void ThreadedSocketConnection::threadMain() { LOG4CXX_AUTO_TRACE(logger_); - controller_->ConnectionCreated(this, device_handle(), application_handle()); ConnectError* connect_error = NULL; if (!Establish(&connect_error)) { LOG4CXX_ERROR(logger_, "Connection Establish failed"); diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc index f0fddfb4f5..f1c047fe58 100644 --- a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc +++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc @@ -281,9 +281,11 @@ TransportAdapter::Error TransportAdapterImpl::DisconnectDevice( j != to_disconnect.end(); ++j) { ConnectionInfo info = *j; - if (OK != info.connection->Disconnect()) { - error = FAIL; - LOG4CXX_ERROR(logger_, "Error on disconnect " << error); + if (info.connection) { + if (OK != info.connection->Disconnect()) { + error = FAIL; + LOG4CXX_ERROR(logger_, "Error on disconnect " << error); + } } } -- cgit v1.2.1