Fix crash in ApiClient::Disconnect

fixes #6672
This commit is contained in:
Gunnar Beutner 2014-07-09 09:14:17 +02:00
parent a5936d8eab
commit f6d6a82762
1 changed files with 3 additions and 2 deletions

View File

@ -72,7 +72,7 @@ void ApiClient::SendMessage(const Dictionary::Ptr& message)
return; return;
} }
m_WriteQueue.Enqueue(boost::bind(&ApiClient::SendMessageSync, this, message)); m_WriteQueue.Enqueue(boost::bind(&ApiClient::SendMessageSync, static_cast<ApiClient::Ptr>(GetSelf()), message));
} }
void ApiClient::SendMessageSync(const Dictionary::Ptr& message) void ApiClient::SendMessageSync(const Dictionary::Ptr& message)
@ -96,7 +96,6 @@ void ApiClient::SendMessageSync(const Dictionary::Ptr& message)
void ApiClient::Disconnect(void) void ApiClient::Disconnect(void)
{ {
Log(LogWarning, "ApiClient", "API client disconnected for identity '" + m_Identity + "'"); Log(LogWarning, "ApiClient", "API client disconnected for identity '" + m_Identity + "'");
m_Stream->Close();
if (m_Endpoint) if (m_Endpoint)
m_Endpoint->RemoveClient(GetSelf()); m_Endpoint->RemoveClient(GetSelf());
@ -104,6 +103,8 @@ void ApiClient::Disconnect(void)
ApiListener::Ptr listener = ApiListener::GetInstance(); ApiListener::Ptr listener = ApiListener::GetInstance();
listener->RemoveAnonymousClient(GetSelf()); listener->RemoveAnonymousClient(GetSelf());
} }
m_Stream->Close();
} }
bool ApiClient::ProcessMessage(void) bool ApiClient::ProcessMessage(void)