When a client connects to the game server, sends a login packet and right after that disconnects from the game server, the client stays 'logged in' in the login server forever.
The Connection class usually receives the data before getting the disconnect message at EndReceive.
However, it could be possible that the "LastOperation" of the SocketAsyncEventArgs is a disconnect and contains data in the Buffer, too. Then the method raises a disconnect event before handling the incoming packet. Because the login process takes a bit of time, it could first do all the logout logic and afterwards logs the account in with the handled packet.
When a client connects to the game server, sends a login packet and right after that disconnects from the game server, the client stays 'logged in' in the login server forever.
The Connection class usually receives the data before getting the disconnect message at EndReceive.
However, it could be possible that the "LastOperation" of the SocketAsyncEventArgs is a disconnect and contains data in the Buffer, too. Then the method raises a disconnect event before handling the incoming packet. Because the login process takes a bit of time, it could first do all the logout logic and afterwards logs the account in with the handled packet.