diff options
Diffstat (limited to 'source/cClientHandle.cpp')
-rw-r--r-- | source/cClientHandle.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp index 41d2fda6c..4a6a0b508 100644 --- a/source/cClientHandle.cpp +++ b/source/cClientHandle.cpp @@ -165,6 +165,10 @@ cClientHandle::~cClientHandle() cPacket_Chat Left(m_Username + " left the game!");
World->Broadcast(Left, this);
}
+ if (World != NULL)
+ {
+ World->RemovePlayer(m_Player);
+ }
}
if (m_Socket.IsValid())
@@ -209,6 +213,10 @@ cClientHandle::~cClientHandle() // Queue the socket to close as soon as it sends all outgoing data:
cRoot::Get()->GetServer()->QueueClientClose(&m_Socket);
+ // We need to remove the socket from SocketThreads because we own it and it gets destroyed after this destructor finishes
+ // TODO: The socket needs to stay alive, someone else has to own it
+ cRoot::Get()->GetServer()->RemoveClient(&m_Socket);
+
LOG("ClientHandle at %p deleted", this);
}
|