From: Gunnar Beutner Date: Mon, 4 Aug 2014 07:50:47 +0000 (+0200) Subject: Fix a potential deadlock in ApiClient::Disconnect X-Git-Tag: v2.0.2~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6455c51777731df278c0f6d51cc4fcd505cd02d4;p=icinga2 Fix a potential deadlock in ApiClient::Disconnect refs #6724 --- diff --git a/lib/remote/apiclient.cpp b/lib/remote/apiclient.cpp index 3c6cea81e..813ed0b0d 100644 --- a/lib/remote/apiclient.cpp +++ b/lib/remote/apiclient.cpp @@ -94,6 +94,11 @@ void ApiClient::SendMessageSync(const Dictionary::Ptr& message) } void ApiClient::Disconnect(void) +{ + Utility::QueueAsyncCallback(boost::bind(&ApiClient::DisconnectSync, this)); +} + +void ApiClient::DisconnectSync(void) { Log(LogWarning, "ApiClient", "API client disconnected for identity '" + m_Identity + "'"); diff --git a/lib/remote/apiclient.hpp b/lib/remote/apiclient.hpp index b6d87e068..6f1f68074 100644 --- a/lib/remote/apiclient.hpp +++ b/lib/remote/apiclient.hpp @@ -55,6 +55,7 @@ public: ConnectionRole GetRole(void) const; void Disconnect(void); + void DisconnectSync(void); void SendMessage(const Dictionary::Ptr& request);