From 7a81f6c2bdf9b9a50c61c3508bc652459bce3b7e Mon Sep 17 00:00:00 2001 From: RaidMax Date: Mon, 12 Jun 2017 07:28:08 -0500 Subject: [PATCH] Reduce poll rate for servers that have stopped responding to RCON requests. Actually fixed the extra chat lines on disconnect. --- Admin/Kayak.cs | 6 +++--- Admin/Server.cs | 27 +++++++++++++++++++++------ Admin/lib/SharedLibrary.dll | Bin 97280 -> 97280 bytes SharedLibrary/RCON.cs | 3 +-- SharedLibrary/Server.cs | 9 +++------ 5 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Admin/Kayak.cs b/Admin/Kayak.cs index 1e9f18cd4..d0896e408 100644 --- a/Admin/Kayak.cs +++ b/Admin/Kayak.cs @@ -75,8 +75,8 @@ namespace IW4MAdmin public IDisposable Connect(IDataConsumer channel) { - channel.OnData(data, null); - channel.OnEnd(); + channel?.OnData(data, null); + channel?.OnEnd(); return null; } } @@ -95,7 +95,7 @@ namespace IW4MAdmin public bool OnData(ArraySegment data, Action continuation) { - buffer.Add(data); + buffer?.Add(data); return false; } diff --git a/Admin/Server.cs b/Admin/Server.cs index 20a682b9a..10e5586e6 100644 --- a/Admin/Server.cs +++ b/Admin/Server.cs @@ -334,7 +334,7 @@ namespace IW4MAdmin } } - async Task PollPlayersAsync() + async Task PollPlayersAsync() { var CurrentPlayers = await this.GetStatusAsync(); @@ -346,7 +346,6 @@ namespace IW4MAdmin foreach (var P in CurrentPlayers) await AddPlayer(P); - } long l_size = -1; @@ -363,7 +362,23 @@ namespace IW4MAdmin try #endif { - await PollPlayersAsync(); + + if ((DateTime.Now - LastPoll).TotalMinutes < 5 && ConnectionErrors > 1) + return; + + try + { + await PollPlayersAsync(); + ConnectionErrors = 0; + LastPoll = DateTime.Now; + } + + catch(SharedLibrary.Exceptions.NetworkException e) + { + ConnectionErrors++; + if (ConnectionErrors > 1) + Logger.WriteError($"{e.Message} {IP}:{Port}, reducing polling rate"); + } lastMessage = DateTime.Now - start; lastCount = DateTime.Now; @@ -540,7 +555,9 @@ namespace IW4MAdmin { ChatHistory.Add(new Chat(E.Origin.Name, "DISCONNECTED", DateTime.Now)); - if (ClientNum == 0) + // the last client hasn't fully disconnected yet + // so there will still be at least 1 client left + if (ClientNum < 2) ChatHistory.Clear(); return; @@ -788,11 +805,9 @@ namespace IW4MAdmin override public void initCommands() { - foreach (Command C in PluginImporter.potentialCommands) Manager.GetCommands().Add(C); - Manager.GetCommands().Add(new Plugins("plugins", "view all loaded plugins. syntax: !plugins", "p", Player.Permission.Administrator, 0, false)); } diff --git a/Admin/lib/SharedLibrary.dll b/Admin/lib/SharedLibrary.dll index 0c8582960ff49f6a9e3429046e72eaf3a7cd923b..f897e40a5564c5ea607a2443e3609d6e6c724a75 100644 GIT binary patch delta 29859 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 NdY9v7`K^S`{{eU18N2`h diff --git a/SharedLibrary/RCON.cs b/SharedLibrary/RCON.cs index 662e18db6..804b00d15 100644 --- a/SharedLibrary/RCON.cs +++ b/SharedLibrary/RCON.cs @@ -69,7 +69,7 @@ namespace SharedLibrary.Network return SplitResponse; } - catch (SocketException) + catch (Exception) { attempts++; if (attempts > 5) @@ -131,7 +131,6 @@ namespace SharedLibrary.Network static byte[] GetRequestBytes(string Request) { - Byte[] initialRequestBytes = Encoding.Unicode.GetBytes(Request); Byte[] fixedRequest = new Byte[initialRequestBytes.Length / 2]; diff --git a/SharedLibrary/Server.cs b/SharedLibrary/Server.cs index 16f9bfd61..9e6b95dc7 100644 --- a/SharedLibrary/Server.cs +++ b/SharedLibrary/Server.cs @@ -171,12 +171,6 @@ namespace SharedLibrary return null; } - /// - /// Set up the basic variables ( base path / hostname / etc ) that allow the monitor thread to work - /// - /// True if no issues initializing, false otherwise - //abstract public bool intializeBasics(); - /// /// Process any server event /// @@ -422,6 +416,9 @@ namespace SharedLibrary public List ChatHistory; public Queue playerHistory { get; private set; } + protected int ConnectionErrors; + protected DateTime LastPoll; + //Info protected String IP; protected int Port;