summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/net/minecraft/server/NetworkManager.java3
-rw-r--r--src/main/java/net/minecraft/server/Packet.java9
2 files changed, 11 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
index f2bcbb72..b995864a 100644
--- a/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
@@ -105,7 +105,8 @@ public class NetworkManager {
flag = true;
}
- if (this.z-- <= 0 && !this.o.isEmpty() && (this.f == 0 || System.currentTimeMillis() - ((Packet) this.o.get(0)).timestamp >= (long) this.f)) {
+ // CraftBukkit - add 'flag'
+ if ((!flag || this.z-- <= 0) && !this.o.isEmpty() && (this.f == 0 || System.currentTimeMillis() - ((Packet) this.o.get(0)).timestamp >= (long) this.f)) {
object = this.g;
synchronized (this.g) {
packet = (Packet) this.o.remove(0);
diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java
index 620017eb..291bc721 100644
--- a/src/main/java/net/minecraft/server/Packet.java
+++ b/src/main/java/net/minecraft/server/Packet.java
@@ -69,6 +69,11 @@ public abstract class Packet {
int i;
try {
+ // CraftBukkit start - sleep while nothing to do
+ while(datainputstream.available() <= 0) {
+ Thread.sleep(10);
+ }
+ // CraftBukkit end
i = datainputstream.read();
if (i == -1) {
return null;
@@ -97,6 +102,10 @@ public abstract class Packet {
System.out.println("Connection reset");
return null;
}
+ catch (InterruptedException exception) {
+ System.out.println("Thread exception");
+ return null;
+ }
// CraftBukkit end
PacketCounter packetcounter = (PacketCounter) e.get(Integer.valueOf(i));