_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);
}
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;
// 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();
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))
{
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.
{
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;