Fix cynara talker 70/99370/7
authorZofia Abramowska <z.abramowska@samsung.com>
Thu, 17 Nov 2016 16:49:56 +0000 (17:49 +0100)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Wed, 30 Nov 2016 13:42:15 +0000 (14:42 +0100)
When cynara thread start fails with exception its destructor
unnecessarily calls join on thread (which blocks).

Change-Id: Ieb1d5727fecf09af7ae557aacf689d4b578e65e0

src/agent/main/CynaraTalker.cpp

index d05dc2f..8ca77cc 100644 (file)
@@ -74,7 +74,8 @@ namespace AskUser {
 namespace Agent {
 
 CynaraTalker::CynaraTalker(RequestHandler requestHandler) : m_requestHandler(requestHandler),
-                                                            m_cynara(nullptr) {
+                                                            m_cynara(nullptr)
+{
     m_future = m_threadFinished.get_future();
 }
 
@@ -89,6 +90,8 @@ bool CynaraTalker::start() {
 }
 
 bool CynaraTalker::stop() {
+    if (!m_thread.joinable())
+        return true;
     // There is no possibility to stop this thread nicely when it waits for requests from cynara
     // We can only try to get rid of thread
     auto status = m_future.wait_for(std::chrono::milliseconds(10));