From 196612b259830e2fdc2820900f63d79ac7e1f8e8 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 5 Oct 2012 15:34:01 +1000 Subject: [PATCH] Everything appears to be working, celebrate! --- .../java/net/md_5/bungee/ServerConnection.java | 2 ++ .../java/net/md_5/bungee/UserConnection.java | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/md_5/bungee/ServerConnection.java b/src/main/java/net/md_5/bungee/ServerConnection.java index c5158b221..047c6ac0a 100644 --- a/src/main/java/net/md_5/bungee/ServerConnection.java +++ b/src/main/java/net/md_5/bungee/ServerConnection.java @@ -8,6 +8,7 @@ import javax.crypto.SecretKey; import net.md_5.bungee.packet.Packet1Login; import net.md_5.bungee.packet.Packet2Handshake; import net.md_5.bungee.packet.PacketCDClientStatus; +import net.md_5.bungee.packet.PacketFAPluginMessage; import net.md_5.bungee.packet.PacketFCEncryptionResponse; import net.md_5.bungee.packet.PacketFDEncryptionRequest; import net.md_5.bungee.packet.PacketFFKick; @@ -58,6 +59,7 @@ public class ServerConnection extends GenericConnection { throw new KickException("[Kicked] " + new PacketFFKick(loginResponse).message); } Packet1Login login = new Packet1Login(loginResponse); + out.write(new PacketFAPluginMessage("REGISTER", "RubberBand".getBytes()).getPacket()); return new ServerConnection(name, socket, in, out, login); } catch (KickException ex) { diff --git a/src/main/java/net/md_5/bungee/UserConnection.java b/src/main/java/net/md_5/bungee/UserConnection.java index 4c7fed0c9..df9e2110c 100644 --- a/src/main/java/net/md_5/bungee/UserConnection.java +++ b/src/main/java/net/md_5/bungee/UserConnection.java @@ -53,6 +53,11 @@ public class UserConnection extends GenericConnection implements CommandSender { upBridge = new UpstreamBridge(); upBridge.start(); } else { + downBridge.alive = false; + try { + downBridge.join(); + } catch (InterruptedException ie) { + } server.disconnect("Quitting"); out.write(new Packet9Respawn((byte) 1, (byte) 0, (byte) 0, (short) 256, "DEFAULT").getPacket()); out.write(new Packet9Respawn((byte) -1, (byte) 0, (byte) 0, (short) 256, "DEFAULT").getPacket()); @@ -143,14 +148,16 @@ public class UserConnection extends GenericConnection implements CommandSender { private class DownstreamBridge extends Thread { + private volatile boolean alive = true; + public DownstreamBridge() { super("Downstream Bridge - " + username); } @Override public void run() { - while (!server.socket.isClosed()) { - try { + try { + while (alive) { byte[] packet = server.in.readPacket(); boolean sendPacket = true; @@ -175,10 +182,10 @@ public class UserConnection extends GenericConnection implements CommandSender { if (sendPacket) { out.write(packet); } - } catch (IOException ex) { - } catch (Exception ex) { - destory(Util.exception(ex)); } + } catch (IOException ex) { + } catch (Exception ex) { + destory(Util.exception(ex)); } } }