From 8ecd2598de9e17762737bd9afcf39824e878f84b Mon Sep 17 00:00:00 2001 From: john30 Date: Wed, 26 Apr 2017 09:41:41 +0200 Subject: [PATCH] stop waiting for result during shutdown or end of thread --- src/ebusd/network.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ebusd/network.h b/src/ebusd/network.h index a70ececb..8fcc309e 100644 --- a/src/ebusd/network.h +++ b/src/ebusd/network.h @@ -56,6 +56,7 @@ class NetMessage { * Destructor. */ ~NetMessage() { + m_resultSet = true; pthread_mutex_destroy(&m_mutex); pthread_cond_destroy(&m_cond); } @@ -132,9 +133,12 @@ class NetMessage { string getResult() { pthread_mutex_lock(&m_mutex); - while (!m_resultSet) - pthread_cond_wait(&m_cond, &m_mutex); - + while (!m_resultSet) { + int wait = pthread_cond_wait(&m_cond, &m_mutex); + if (wait != 0 && wait != ETIMEDOUT) { + break; + } + } m_request.clear(); string result = m_result; m_result.clear();