Condata weirdness
-
So while trying to diagnose a crash log, I stumbled on this bit of code which was causing trouble for us for a few days:
// Are there accounts connected with client IDs greater than max player count? // If so, kick them as FLServer is buggy and will use high client IDs but // will not allow character selection on them. for (int iClientID = Players.GetMaxPlayerCount() + 1; iClientID <= MAX_CLIENT_ID; iClientID++) { if (Players[iClientID].iOnlineID) { CAccount *acc = Players.FindAccountFromClientID(iClientID); if (acc) { //ConPrint(L"Kicking lag bug account iClientID=%u %u\n", iClientID,Players[iClientID].iOnlineID); acc->ForceLogout(); Players.logout(iClientID); } } }
Firstly, is this even justified? It’s relatively hard to test for reproduction, but right now the result for us was even worse: people would get instantly kicked on connecting and there was nothing short of a restart that would fix it because the server wasn’t attempting to reassign client IDs lower than the max player count.
I don’t know if it’s Hook, FLServer, or one of our plugins, but the client IDs seem to stick quite persistently to the extent that they’re almost never reassigned, so we just keep going up and up as the day goes on. I’d recently dropped our player cap to 32 (from 128), so when we reached that, bam, nobody new could connect.
Is there something to force FLServer to reassign free client ids or should this piece of code just be removed outright?
-
Used to have this experience a while ago:
No Player or Account is “really” online, but there are account-ids in the list of FlServer of “connected IDs” that don´t show up in the “correct” way or correspond to ANY “registered” Account-ID. The only way to “kick” those “hickup-accounts” was to shutdown the server and restart it… Don´t know if this is related to your post ?Greetings
J.R. -
No, that’s more likely to be the partial connection ddos technique that was particularly popular some time ago.
In my case, no account shows up as online and any listing comes up empty, yet when a new player connects they get assigned a client ID of 33 (since the player cap was 32).