diff options
author | speakeasy <mekevin1917@gmail.com> | 2011-01-11 05:15:25 +0800 |
---|---|---|
committer | tahg <tahgtahv@gmail.com> | 2011-01-11 05:34:52 +0800 |
commit | 6a15ae252b6a1cfd63db8722b7878eedfcda170f (patch) | |
tree | 5eec1975c959e97235f30377ce1b8d59b9a3b800 /src/main/java/net/minecraft/server/NetworkAcceptThread.java | |
parent | 802a46a7097354fe40a6502edc5357e105e84fc3 (diff) | |
download | craftbukkit-6a15ae252b6a1cfd63db8722b7878eedfcda170f.tar craftbukkit-6a15ae252b6a1cfd63db8722b7878eedfcda170f.tar.gz craftbukkit-6a15ae252b6a1cfd63db8722b7878eedfcda170f.tar.lz craftbukkit-6a15ae252b6a1cfd63db8722b7878eedfcda170f.tar.xz craftbukkit-6a15ae252b6a1cfd63db8722b7878eedfcda170f.zip |
Clean up and fix bug in NetworkAcceptThread and NetworkListenThread classes.
Signed-off-by: speakeasy <mekevin1917@gmail.com>
Diffstat (limited to 'src/main/java/net/minecraft/server/NetworkAcceptThread.java')
-rw-r--r-- | src/main/java/net/minecraft/server/NetworkAcceptThread.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/NetworkAcceptThread.java b/src/main/java/net/minecraft/server/NetworkAcceptThread.java new file mode 100644 index 00000000..05108d6b --- /dev/null +++ b/src/main/java/net/minecraft/server/NetworkAcceptThread.java @@ -0,0 +1,47 @@ +package net.minecraft.server; + +import java.io.IOException; +import java.net.InetAddress; +import java.util.HashMap; + +class NetworkAcceptThread extends Thread { + + final MinecraftServer a; /* synthetic field */ + + final NetworkListenThread b; /* synthetic field */ + + + NetworkAcceptThread(NetworkListenThread networklistenthread, String s, MinecraftServer minecraftserver) { + b = networklistenthread; + a = minecraftserver; + // super(s); + } + + @Override + public void run() { + HashMap<InetAddress, Long> clients = new HashMap<InetAddress, Long>(); + do { + if (!b.b) { + break; + } + try { + java.net.Socket socket = NetworkListenThread.a(b).accept(); + if (socket != null) { + InetAddress addr = socket.getInetAddress(); + if (clients.containsKey(addr)) { + if (System.currentTimeMillis() - clients.get(addr) < 5000) { + clients.put(addr, System.currentTimeMillis()); + socket.close(); + continue; + } + } + clients.put(addr, System.currentTimeMillis()); + NetLoginHandler netloginhandler = new NetLoginHandler(a, socket, (new StringBuilder()).append("Connection #").append(NetworkListenThread.b(b)).toString()); + NetworkListenThread.a(b, netloginhandler); + } + } catch (IOException ioexception) { + ioexception.printStackTrace(); + } + } while (true); + } +} |