From 4d5894e4cb29bfa4f9bb07edfb85f57363a8866e Mon Sep 17 00:00:00 2001 From: Wesley Wolfe Date: Thu, 6 Sep 2012 22:11:17 -0500 Subject: [PATCH] Fix crash from console-commands throwing exception. Fixes BUKKIT-2479 When 1.3.1 was released, a try-catch block was removed from the tick loop that called the method in NMS to handle commands. This restores a try-catch to prevent the console from crashing the server. --- src/main/java/net/minecraft/server/NetServerHandler.java | 9 ++++++++- src/main/java/org/bukkit/craftbukkit/CraftServer.java | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index 6087692cef..f11d2b2755 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -106,7 +106,14 @@ public class NetServerHandler extends NetHandler { this.h = false; ++this.f; // this.minecraftServer.methodProfiler.a("packetflow"); // CraftBukkit - not in production code - this.networkManager.b(); + // CraftBukkit start + try { + this.networkManager.b(); + } catch (Exception ex) { + logger.log(Level.WARNING, "Exception from " + this.player.name, ex); + this.disconnect(ex.getClass().getName()); + } + // CraftBukkit end // this.minecraftServer.methodProfiler.c("keepAlive"); // CraftBukkit - not in production code if ((long) this.f - this.l > 20L) { this.l = (long) this.f; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 500c490934..f11f7329e3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -485,7 +485,12 @@ public final class CraftServer implements Server { return true; } } - return dispatchCommand(sender, serverCommand.command); + try { + return dispatchCommand(sender, serverCommand.command); + } catch (Exception ex) { + getLogger().log(Level.WARNING, "Unexpected exception while parsing console command \"" + serverCommand.command + '"', ex); + return false; + } } public boolean dispatchCommand(CommandSender sender, String commandLine) {