From f99efb517721f78460c1b9fbbe6c6b3d94f9a4dd Mon Sep 17 00:00:00 2001 From: ORelio Date: Mon, 11 Aug 2014 12:38:39 +0200 Subject: [PATCH] Better connection lost detection To detect that the TCP connection has been lost, try sending a small packet every ~10 seconds. If the connection is lost, it will then throw an exception which will allow MCC to detect that connection is lost, and eventually properly trigger the AutoRelog bot. - See issue #41 - --- MinecraftClient/Protocol/Handlers/Protocol16.cs | 13 ++++++++++++- MinecraftClient/Protocol/Handlers/Protocol17.cs | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/MinecraftClient/Protocol/Handlers/Protocol16.cs b/MinecraftClient/Protocol/Handlers/Protocol16.cs index 4af70ab1..54733664 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol16.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol16.cs @@ -41,9 +41,20 @@ namespace MinecraftClient.Protocol.Handlers private void Updater() { + int keep_alive_interval = 100; + int keep_alive_timer = 100; try { - do { Thread.Sleep(100); } + do + { + Thread.Sleep(100); + keep_alive_timer--; + if (keep_alive_timer <= 0) + { + Send(getPaddingPacket()); + keep_alive_timer = keep_alive_interval; + } + } while (Update()); } catch (System.IO.IOException) { } diff --git a/MinecraftClient/Protocol/Handlers/Protocol17.cs b/MinecraftClient/Protocol/Handlers/Protocol17.cs index 62b65fb8..fe97cae3 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol17.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol17.cs @@ -44,9 +44,20 @@ namespace MinecraftClient.Protocol.Handlers private void Updater() { + int keep_alive_interval = 100; + int keep_alive_timer = 100; try { - do { Thread.Sleep(100); } + do + { + Thread.Sleep(100); + keep_alive_timer--; + if (keep_alive_timer <= 0) + { + Send(getPaddingPacket()); + keep_alive_timer = keep_alive_interval; + } + } while (Update()); } catch (System.IO.IOException) { }