From: AeonLucid Date: Sat, 24 Oct 2020 01:51:18 +0000 (+0200) Subject: Fix ServerReplay error X-Git-Tag: v1.2.2~96^2~25 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=1cb7077772b9f22c169a8aefad79c2cd43660b3a;p=rhonda%2Fimpostor.git Fix ServerReplay error --- diff --git a/src/Impostor.Server/Net/Client.cs b/src/Impostor.Server/Net/Client.cs index 93bc4ee..f0711b2 100644 --- a/src/Impostor.Server/Net/Client.cs +++ b/src/Impostor.Server/Net/Client.cs @@ -269,7 +269,7 @@ namespace Impostor.Server.Net _logger.LogError(ex, "Exception caught in client disconnection."); } - _logger.LogInformation("Client disconnecting, reason: {0}.", reason); + _logger.LogInformation("Client {0} disconnecting, reason: {1}.", Id, reason); _clientManager.Remove(this); } diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index b2828d4..d58466f 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Impostor.Api; using Impostor.Api.Innersloth.Data; using Impostor.Api.Innersloth.Net; using Impostor.Api.Innersloth.Net.Objects; @@ -246,8 +247,7 @@ namespace Impostor.Server.Net.State // Only the host is allowed to despawn objects. if (!sender.IsHost) { - _logger.LogWarning("Player {0} ({1}) tried to send SpawnFlag as non-host.", sender.Client.Name, sender.Client.Id); - return false; + throw new ImpostorCheatException("Tried to send SpawnFlag as non-host."); } var objectId = reader.ReadPackedUInt32(); @@ -314,9 +314,9 @@ namespace Impostor.Server.Net.State break; } + // Only the host is allowed to despawn objects. case GameDataTag.DespawnFlag: { - // Only the host is allowed to despawn objects. var netId = reader.ReadPackedUInt32(); if (_allObjectsFast.TryGetValue(netId, out var obj)) { diff --git a/src/Impostor.Tools.ServerReplay/Program.cs b/src/Impostor.Tools.ServerReplay/Program.cs index c904081..424a7bf 100644 --- a/src/Impostor.Tools.ServerReplay/Program.cs +++ b/src/Impostor.Tools.ServerReplay/Program.cs @@ -125,7 +125,7 @@ namespace Impostor.Tools.ServerReplay var addressLength = reader.ReadByte(); var addressBytes = reader.ReadBytes(addressLength); var addressPort = reader.ReadUInt16(); - var address = new IPEndPoint(new IPAddress(addressBytes), addressPort); + var address = new IPEndPoint(new IPAddress(addressBytes), clientId); var name = reader.ReadString(); // Create and register connection. @@ -153,9 +153,9 @@ namespace Impostor.Tools.ServerReplay { GameOptions.Add(clientId, Message00HostGameC2S.Deserialize(message)); } - else + else if (Connections.TryGetValue(clientId, out var client)) { - await Connections[clientId].Client!.HandleMessageAsync(message, messageType); + await client.Client!.HandleMessageAsync(message, messageType); } break;