From: Gunnar Beutner Date: Mon, 30 Jun 2014 12:01:07 +0000 (+0200) Subject: Fix another deadlock in ApiClient::SendMessage X-Git-Tag: v2.0.1~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a0c09303251d22738f82a9c35a66d327c98699a3;p=icinga2 Fix another deadlock in ApiClient::SendMessage refs #6368 --- diff --git a/lib/remote/apiclient.cpp b/lib/remote/apiclient.cpp index 9203094f1..f48a9873c 100644 --- a/lib/remote/apiclient.cpp +++ b/lib/remote/apiclient.cpp @@ -67,7 +67,7 @@ ConnectionRole ApiClient::GetRole(void) const void ApiClient::SendMessage(const Dictionary::Ptr& message) { try { - ObjectLock olock(m_Stream); + boost::mutex::scoped_lock lock(m_WriteMutex); JsonRpc::SendMessage(m_Stream, message); if (message->Get("method") != "log::SetLogPosition") m_Seen = Utility::GetTime(); diff --git a/lib/remote/apiclient.hpp b/lib/remote/apiclient.hpp index b491708c0..666262eaa 100644 --- a/lib/remote/apiclient.hpp +++ b/lib/remote/apiclient.hpp @@ -58,6 +58,7 @@ public: void SendMessage(const Dictionary::Ptr& request); private: + boost::mutex m_WriteMutex; String m_Identity; Endpoint::Ptr m_Endpoint; Stream::Ptr m_Stream;