Detect and disconnect 1.3 clients properly. Fixes BUKKIT-1952

This commit is contained in:
Wesley Wolfe 2012-07-26 01:17:09 -05:00
parent b00de5f176
commit a4d7691299
2 changed files with 24 additions and 1 deletions

View File

@ -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) {

View File

@ -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) {