Cleanup & Fixes for .NET 5 (#309)

- [X] Fixes several bugs
- [X] Updates more ordinal issues
- [X] Cleans up the code a bit
- [X] Turns classes static that should have been
- [X] Changes TcpServer.Instances to a HashSet

Bumps release version
This commit is contained in:
Kamron Batman 2020-11-15 10:03:50 -08:00 committed by GitHub
parent 4ad8811df2
commit 525cda5413
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
266 changed files with 1348 additions and 1800 deletions

View file

@ -513,7 +513,7 @@ namespace Server.Network
continue;
}
var bytesWritten = await Connection.SendAsync(result.Buffer, SocketFlags.None);
var bytesWritten = await Connection.SendAsync(result.Buffer, SocketFlags.None).ConfigureAwait(false);
if (bytesWritten > 0)
{
@ -567,7 +567,7 @@ namespace Server.Network
continue;
}
var bytesWritten = await socket.ReceiveAsync(result.Buffer, SocketFlags.None);
var bytesWritten = await socket.ReceiveAsync(result.Buffer, SocketFlags.None).ConfigureAwait(false);
if (bytesWritten <= 0)
{
break;
@ -596,11 +596,9 @@ namespace Server.Network
public static void HandleAllReceives()
{
var clients = TcpServer.Instances;
for (int i = 0; i < clients.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
clients[i].HandleReceive();
ns.HandleReceive();
}
}
@ -662,11 +660,9 @@ namespace Server.Network
public static void FlushAll()
{
var clients = TcpServer.Instances;
for (int i = 0; i < clients.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
clients[i].Flush();
ns.Flush();
}
}
@ -685,11 +681,9 @@ namespace Server.Network
{
long curTicks = Core.TickCount;
var clients = TcpServer.Instances;
for (int i = 0; i < clients.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
clients[i].CheckAlive(curTicks);
ns.CheckAlive(curTicks);
}
}
catch (Exception ex)

View file

@ -10,7 +10,6 @@ namespace Server.Network
{
private const int CompressorBufferSize = 0x10000;
private const int BufferSize = 4096;
private readonly int m_Length;
private byte[] m_CompiledBuffer;
@ -120,9 +119,11 @@ namespace Server.Network
}
}
private readonly object _object = new object();
public byte[] Compile(bool compress, out int length)
{
lock (this)
lock (_object)
{
if (m_CompiledBuffer == null)
{

View file

@ -15,8 +15,8 @@
using System;
using System.IO;
using Server.Accounting;
using System.Buffers;
using Server.Accounting;
namespace Server.Network
{

View file

@ -39,7 +39,7 @@ namespace Server.Network
public static IPEndPoint[] ListeningAddresses { get; private set; }
public static TcpListener[] Listeners { get; private set; }
public static List<NetState> Instances { get; } = new List<NetState>(128);
public static HashSet<NetState> Instances { get; } = new HashSet<NetState>(128);
public static ConcurrentQueue<NetState> m_ConnectedQueue = new ConcurrentQueue<NetState>();
@ -180,7 +180,7 @@ namespace Server.Network
try
{
socket = await listener.AcceptSocketAsync();
socket = await listener.AcceptSocketAsync().ConfigureAwait(false);
if (Instances.Count >= MaxConnections)
{
socket.Send(socketRejected, SocketFlags.None);
@ -205,8 +205,10 @@ namespace Server.Network
if (_nextMaximumSocketsReachedMessage <= ticks)
{
var ipep = (IPEndPoint)socket!.RemoteEndPoint;
Console.WriteLine("Listener {0}:{1}: Failed (Maximum connections reached)", ipep.Address, ipep.Port);
if (socket?.RemoteEndPoint is IPEndPoint ipep)
{
Console.WriteLine("Listener {0}:{1}: Failed (Maximum connections reached)", ipep.Address, ipep.Port);
}
_nextMaximumSocketsReachedMessage = ticks + _listenerErrorMessageDelay;
}
}