From 0942b1861b82e1e1c83f97ce3d0bfeaa04f15a91 Mon Sep 17 00:00:00 2001 From: Travis Watkins Date: Sun, 10 Jun 2012 21:52:52 -0500 Subject: [PATCH] Handle rcon timeouts properly --- .../net/minecraft/server/RemoteControlSession.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/RemoteControlSession.java b/src/main/java/net/minecraft/server/RemoteControlSession.java index 9d4c234a77..85b424e716 100644 --- a/src/main/java/net/minecraft/server/RemoteControlSession.java +++ b/src/main/java/net/minecraft/server/RemoteControlSession.java @@ -17,6 +17,13 @@ public class RemoteControlSession extends RemoteConnectionThread { RemoteControlSession(IMinecraftServer iminecraftserver, Socket socket) { super(iminecraftserver); this.h = socket; + // CraftBukkit start - set infinite timeout so we sleep until there is data available + try { + this.h.setSoTimeout(0); + } catch (Exception ex) { + this.running = false; + } + // CraftBukkit end this.j = iminecraftserver.a("rcon.password", ""); this.info("Rcon connection from: " + socket.getInetAddress()); } @@ -83,8 +90,9 @@ public class RemoteControlSession extends RemoteConnectionThread { continue; } } + return; // CraftBukkit - return if we don't get enough data } catch (SocketTimeoutException sockettimeoutexception) { - return; // CraftBukkit - shut down the thread after hitting an exception. + continue; } catch (IOException ioexception) { if (this.running) { this.info("IO: " + ioexception.getMessage()); @@ -135,6 +143,7 @@ public class RemoteControlSession extends RemoteConnectionThread { if (null != this.h) { try { this.h.close(); + this.info("Rcon connection closed."); // CraftBukkit } catch (IOException ioexception) { this.warning("IO: " + ioexception.getMessage()); }