From: Gunnar Beutner Date: Wed, 9 Jul 2014 07:14:17 +0000 (+0200) Subject: Fix crash in ApiClient::Disconnect X-Git-Tag: v2.0.1~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f6d6a8276215500a1ec8ab62ca3f329e9aa730be;p=icinga2 Fix crash in ApiClient::Disconnect fixes #6672 --- diff --git a/lib/remote/apiclient.cpp b/lib/remote/apiclient.cpp index e7a2c5cb0..3c6cea81e 100644 --- a/lib/remote/apiclient.cpp +++ b/lib/remote/apiclient.cpp @@ -72,7 +72,7 @@ void ApiClient::SendMessage(const Dictionary::Ptr& message) return; } - m_WriteQueue.Enqueue(boost::bind(&ApiClient::SendMessageSync, this, message)); + m_WriteQueue.Enqueue(boost::bind(&ApiClient::SendMessageSync, static_cast(GetSelf()), message)); } void ApiClient::SendMessageSync(const Dictionary::Ptr& message) @@ -96,7 +96,6 @@ void ApiClient::SendMessageSync(const Dictionary::Ptr& message) void ApiClient::Disconnect(void) { Log(LogWarning, "ApiClient", "API client disconnected for identity '" + m_Identity + "'"); - m_Stream->Close(); if (m_Endpoint) m_Endpoint->RemoveClient(GetSelf()); @@ -104,6 +103,8 @@ void ApiClient::Disconnect(void) ApiListener::Ptr listener = ApiListener::GetInstance(); listener->RemoveAnonymousClient(GetSelf()); } + + m_Stream->Close(); } bool ApiClient::ProcessMessage(void)