mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2026-04-06 15:56:18 +00:00
fix not removing client when disconnecting them
This commit is contained in:
@@ -74,6 +74,7 @@ void TClient::Disconnect(std::string_view Reason) {
|
||||
if (ec) {
|
||||
beammp_debugf("Failed to close client socket: {}", ec.message());
|
||||
}
|
||||
mServer.RemoveClientById(GetID());
|
||||
}
|
||||
|
||||
void TClient::SetCarPosition(int Ident, const std::string& Data) {
|
||||
|
||||
@@ -190,6 +190,15 @@ void TServer::RemoveClient(const std::weak_ptr<TClient>& WeakClientPtr) {
|
||||
mClients.erase(WeakClientPtr.lock());
|
||||
}
|
||||
|
||||
void TServer::RemoveClientById(int Id) {
|
||||
auto Client = GetClient(*this, Id);
|
||||
WriteLock Lock(mClientsMutex);
|
||||
if (Client) {
|
||||
Client->ClearCars();
|
||||
mClients.erase(Client);
|
||||
}
|
||||
}
|
||||
|
||||
void TServer::ForEachClientWeak(const std::function<bool(std::weak_ptr<TClient>)>& Fn) {
|
||||
decltype(mClients) Clients;
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user