3519: Send logout packet after using timeout protection r=def- a=heinrich5991

Only send the logout packet if you're actually logged in.

Fixes #3490. Supersedes #3495.

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
This commit is contained in:
bors[bot] 2021-01-17 18:00:00 +00:00 committed by GitHub
commit cdb5a5c280
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3629,6 +3629,10 @@ bool CServer::SetTimedOut(int ClientID, int OrigID)
}
m_aClients[ClientID].m_Sixup = m_aClients[OrigID].m_Sixup;
if(m_aClients[OrigID].m_Authed != AUTHED_NO)
{
LogoutClient(ClientID, "Timeout Protection");
}
DelClientCallback(OrigID, "Timeout Protection used", this);
m_aClients[ClientID].m_Authed = AUTHED_NO;
m_aClients[ClientID].m_Flags = m_aClients[OrigID].m_Flags;