Fixed timeout issue that occurs with HLSW

This commit is contained in:
Deathmax 2011-07-09 17:26:28 +08:00
parent 07e335b780
commit 0b6777ba85

View file

@ -31,7 +31,7 @@ namespace TShockAPI
class RconHandler class RconHandler
{ {
public static string Password = ""; public static string Password = "";
private static DateTime lastRequest; private static DateTime LastRequest;
public static int ListenPort; public static int ListenPort;
public static bool ContinueServer = true; public static bool ContinueServer = true;
public static string Response = ""; public static string Response = "";
@ -80,7 +80,7 @@ namespace TShockAPI
try try
{ {
var listenEP = new IPEndPoint(IPAddress.Any, ListenPort); var listenEP = new IPEndPoint(IPAddress.Any, ListenPort);
lastRequest = DateTime.Now; LastRequest = DateTime.Now;
byte[] bytes = listener.Receive(ref listenEP); byte[] bytes = listener.Receive(ref listenEP);
var packet = ParsePacket(bytes, listenEP); var packet = ParsePacket(bytes, listenEP);
listener.Send(packet, packet.Length, listenEP); listener.Send(packet, packet.Length, listenEP);
@ -118,7 +118,7 @@ namespace TShockAPI
var packetstring = Encoding.UTF8.GetString(PadPacket(bytes)); var packetstring = Encoding.UTF8.GetString(PadPacket(bytes));
var redirect = false; var redirect = false;
var print = true; var print = true;
if ((DateTime.Now - lastRequest).Milliseconds >= 100) if ((DateTime.Now - LastRequest).Milliseconds >= 100)
{ {
if (packetstring.StartsWith("rcon") || packetstring.Substring(4).StartsWith("rcon") || packetstring.Substring(5).StartsWith("rcon")) if (packetstring.StartsWith("rcon") || packetstring.Substring(4).StartsWith("rcon") || packetstring.Substring(5).StartsWith("rcon"))
{ {
@ -153,7 +153,10 @@ namespace TShockAPI
Log.Info("No password for rcon set"); Log.Info("No password for rcon set");
} }
} }
else if (packetstring.StartsWith("getinfo") else
redirect = true;
}
if (packetstring.StartsWith("getinfo")
|| packetstring.Substring(4).StartsWith("getinfo") || packetstring.Substring(4).StartsWith("getinfo")
|| packetstring.Substring(5).StartsWith("getinfo")) || packetstring.Substring(5).StartsWith("getinfo"))
{ {
@ -169,6 +172,7 @@ namespace TShockAPI
infostring += @"\challenge\" + challenge; infostring += @"\challenge\" + challenge;
response += infostring; response += infostring;
print = false; print = false;
redirect = false;
} }
else if (packetstring.StartsWith("getstatus") else if (packetstring.StartsWith("getstatus")
|| packetstring.Substring(4).StartsWith("getstatus") || packetstring.Substring(4).StartsWith("getstatus")
@ -191,9 +195,7 @@ namespace TShockAPI
} }
response += statusstring; response += statusstring;
print = false; print = false;
} redirect = false;
else
redirect = true;
} }
if (!redirect) if (!redirect)
return (ConstructPacket(response, print)); return (ConstructPacket(response, print));