diff --git a/src/TNetwork.cpp b/src/TNetwork.cpp index 6239d81a..6aed9f6a 100644 --- a/src/TNetwork.cpp +++ b/src/TNetwork.cpp @@ -430,35 +430,27 @@ std::shared_ptr TNetwork::Authentication(TConnection&& RawConnection) { Reason = "No guests are allowed on this server! To join, sign up at: forum.beammp.com."; } - bool Allowed = true; - if (NotAllowed) { - Allowed = false; - } - if (NotAllowedWithReason) { - Allowed = false; + if (!NotAllowed && !NotAllowedWithReason && mServer.ClientCount() >= size_t(Application::Settings.getAsInt(Settings::Key::General_MaxPlayers)) && !BypassLimit) { + NotAllowedWithReason = true; + Reason = "Server full!"; } - if (NotAllowed) { - ClientKick(*Client, "you are not allowed on the server!"); - } else if (NotAllowedWithReason) { + if (NotAllowedWithReason) { ClientKick(*Client, Reason); + } else if (NotAllowed) { + ClientKick(*Client, "you are not allowed on the server!"); } + auto PostFutures = LuaAPI::MP::Engine->TriggerEvent("postPlayerAuth", "", NotAllowed || NotAllowedWithReason, Reason, Client->GetName(), Client->GetRoles(), Client->IsGuest(), Client->GetIdentifiers()); + // the post event is not cancellable so we dont wait for it + LuaAPI::MP::Engine->ReportErrors(PostFutures); - if (!Allowed) { - return {}; - } else if (mServer.ClientCount() < size_t(Application::Settings.getAsInt(Settings::Key::General_MaxPlayers)) || BypassLimit) { + if (!NotAllowed && !NotAllowedWithReason) { beammp_info("Identification success"); mServer.InsertClient(Client); TCPClient(Client); - } else { - ClientKick(*Client, "Server full!"); } - auto PostFutures = LuaAPI::MP::Engine->TriggerEvent("postPlayerAuth", "", Allowed, Client->GetName(), Client->GetRoles(), Client->IsGuest(), Client->GetIdentifiers()); - // the post event is not cancellable so we dont wait for it - LuaAPI::MP::Engine->ReportErrors(PostFutures); - return Client; }