Fix an error while restoring connection in case of server down 09/257409/2
authorYunmi Ha <yunmi.ha@samsung.com>
Fri, 23 Apr 2021 10:26:56 +0000 (19:26 +0900)
committerYunmi Ha <yunmi.ha@samsung.com>
Mon, 26 Apr 2021 08:37:47 +0000 (17:37 +0900)
- remove command channel before restoring connection

Change-Id: I18967110bb293e7d9442628bf7b980e436c1d33d
Signed-off-by: Yunmi Ha <yunmi.ha@samsung.com>
src/client/sensor_internal.cpp
src/client/sensor_listener.cpp
src/client/sensor_manager.cpp

index 7fa8f4daf1506df5475db7975beaf3a698c80afe..f185e9412d94d9715b7e3b72d66ee6c5c9e390dc 100644 (file)
@@ -364,6 +364,9 @@ API bool sensord_disconnect(int handle)
        delete listener;
        listeners.erase(handle);
 
+       if (listeners.empty())
+               manager.disconnect();
+
        return true;
 }
 
index 51c015245b72c30cde2cbda121d4a7b885802290..12e2d99530ec58efcd08a685669133a5ca97ce66 100644 (file)
@@ -187,6 +187,11 @@ sensor_t sensor_listener::get_sensor(void)
 void sensor_listener::restore(void)
 {
        ret_if(!is_connected());
+
+       m_cmd_channel->disconnect();
+       delete m_cmd_channel;
+       m_cmd_channel = NULL;
+
        retm_if(!connect(), "Failed to restore listener");
 
        _D("Restoring sensor listener");
index 10ec56c53736fba31d33561d8b49783be2c58144..bcb86d5a5f03c8c724e01555555ca49131d46622 100644 (file)
@@ -249,6 +249,10 @@ void sensor_manager::restore(void)
 {
        ret_if(!is_connected());
 
+       m_cmd_channel->disconnect();
+       delete m_cmd_channel;
+       m_cmd_channel = NULL;
+
        m_connected.store(false);
        retm_if(!connect_channel(), "Failed to restore manager");