diff --git a/src/TTCPServer.cpp b/src/TTCPServer.cpp index 814b00a..e4b9a20 100644 --- a/src/TTCPServer.cpp +++ b/src/TTCPServer.cpp @@ -104,6 +104,12 @@ void TTCPServer::Authentication(SOCKET TCPSock) { return; } + if (!AuthResponse.IsObject()) { + ClientKick(*Client, "Backend returned invalid auth response format."); + error("Backend returned invalid auth response format. This should never happen."); + return; + } + if (AuthResponse["username"].IsString() && AuthResponse["roles"].IsString() && AuthResponse["guest"].IsBool() && AuthResponse["identifiers"].IsArray()) { @@ -166,7 +172,6 @@ bool TTCPServer::TCPSend(TClient& c, const std::string& Data, bool IsSync) { c.EnqueueMissedPacketDuringSyncing(Data); return true; } else if (!c.IsSyncing() && c.IsSynced() && c.MissedPacketQueueSize() != 0) { - std::this_thread::sleep_for(std::chrono::seconds(1)); while (c.MissedPacketQueueSize() > 0) { std::string QData = c.MissedPacketQueue().front(); c.MissedPacketQueue().pop(); diff --git a/src/TUDPServer.cpp b/src/TUDPServer.cpp index 7f3ccca..1217062 100644 --- a/src/TUDPServer.cpp +++ b/src/TUDPServer.cpp @@ -97,7 +97,7 @@ void TUDPServer::SendToAll(TClient* c, const std::string& Data, bool Self, bool if (!ClientPtr.expired()) { auto Client = ClientPtr.lock(); if (Self || Client.get() != c) { - if (Client->IsSynced()) { + if (Client->IsSynced() || Client->IsSyncing()) { if (Rel || C == 'W' || C == 'Y' || C == 'V' || C == 'E') { if (C == 'O' || C == 'T' || Data.length() > 1000) mTCPServer.SendLarge(*Client, Data);