diff options
author | Wesley Wolfe <weswolf@aol.com> | 2012-07-26 01:17:09 -0500 |
---|---|---|
committer | Wesley Wolfe <weswolf@aol.com> | 2012-07-26 01:17:09 -0500 |
commit | a4d7691299d86edc46931b3978de62a60576ba0d (patch) | |
tree | 1274fb8cf86a813e2870e19e8791529772bf1ef0 /src | |
parent | b00de5f1768e14238f8660b63eb3fd5d744fc0a9 (diff) | |
download | craftbukkit-a4d7691299d86edc46931b3978de62a60576ba0d.tar craftbukkit-a4d7691299d86edc46931b3978de62a60576ba0d.tar.gz craftbukkit-a4d7691299d86edc46931b3978de62a60576ba0d.tar.lz craftbukkit-a4d7691299d86edc46931b3978de62a60576ba0d.tar.xz craftbukkit-a4d7691299d86edc46931b3978de62a60576ba0d.zip |
Detect and disconnect 1.3 clients properly. Fixes BUKKIT-1952
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/net/minecraft/server/NetLoginHandler.java | 6 | ||||
-rw-r--r-- | src/main/java/net/minecraft/server/NetworkManager.java | 19 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/NetLoginHandler.java b/src/main/java/net/minecraft/server/NetLoginHandler.java index 436f7de4..89404afd 100644 --- a/src/main/java/net/minecraft/server/NetLoginHandler.java +++ b/src/main/java/net/minecraft/server/NetLoginHandler.java @@ -55,6 +55,12 @@ public class NetLoginHandler extends NetHandler { } public void a(Packet2Handshake packet2handshake) { + // CraftBukkit start - 1.3 detection + if (packet2handshake.a == null) { + disconnect("Outdated server!"); + return; + } + // CraftBukkit end // CraftBukkit start int i = packet2handshake.a.indexOf(';'); if (i == -1) { diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java index 003fe74e..58a4f813 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -52,7 +52,7 @@ public class NetworkManager { try { // CraftBukkit start - cant compile these outside the try socket.setSoTimeout(30000); - this.input = new DataInputStream(socket.getInputStream()); + this.input = new DataInputStream(new java.io.BufferedInputStream(socket.getInputStream(), 2)); // Remove buffered input after 1.3 this.output = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream(), 5120)); } catch (java.io.IOException socketexception) { // CraftBukkit end @@ -146,6 +146,23 @@ public class NetworkManager { boolean flag = false; try { + // CraftBukkit start - 1.3 detection + this.input.mark(2); + if (this.input.read() == 2 && this.input.read() != 0) { + Packet.a(this.input, 16); + Packet.a(this.input, 255); + this.input.readInt(); + + if (this.q) { + return true; + } + + this.m.clear(); + this.m.add(new Packet2Handshake(null)); + return true; + } + this.input.reset(); + // CraftBukkit end Packet packet = Packet.a(this.input, this.packetListener.c()); if (packet != null) { |