mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-09 00:51:39 +01:00
Fix issue with plugins sending plugin messages causing login to hang - often seen in bukkit->bungee plugins
This commit is contained in:
parent
30aef50359
commit
e710c42e46
@ -1,4 +1,4 @@
|
|||||||
From 3f4c6866021b6be78d1e74707730b18a0323bbe2 Mon Sep 17 00:00:00 2001
|
From cf9f87164540e86ffc374ea90f0c1e7e9674a29d Mon Sep 17 00:00:00 2001
|
||||||
From: md_5 <md_5@live.com.au>
|
From: md_5 <md_5@live.com.au>
|
||||||
Date: Tue, 23 Apr 2013 11:47:32 +1000
|
Date: Tue, 23 Apr 2013 11:47:32 +1000
|
||||||
Subject: [PATCH] Netty
|
Subject: [PATCH] Netty
|
||||||
@ -471,7 +471,7 @@ index 0000000..aa8192e
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/org/spigotmc/netty/NettyNetworkManager.java b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java
|
diff --git a/src/main/java/org/spigotmc/netty/NettyNetworkManager.java b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..638a70e
|
index 0000000..a9224d9
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java
|
+++ b/src/main/java/org/spigotmc/netty/NettyNetworkManager.java
|
||||||
@@ -0,0 +1,254 @@
|
@@ -0,0 +1,254 @@
|
||||||
@ -536,7 +536,7 @@ index 0000000..638a70e
|
|||||||
+ private volatile boolean connected;
|
+ private volatile boolean connected;
|
||||||
+ private Channel channel;
|
+ private Channel channel;
|
||||||
+ private SocketAddress address;
|
+ private SocketAddress address;
|
||||||
+ private Connection connection;
|
+ Connection connection;
|
||||||
+ private SecretKey secret;
|
+ private SecretKey secret;
|
||||||
+ private String dcReason;
|
+ private String dcReason;
|
||||||
+ private Object[] dcArgs;
|
+ private Object[] dcArgs;
|
||||||
@ -731,7 +731,7 @@ index 0000000..638a70e
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/org/spigotmc/netty/NettyServerConnection.java b/src/main/java/org/spigotmc/netty/NettyServerConnection.java
|
diff --git a/src/main/java/org/spigotmc/netty/NettyServerConnection.java b/src/main/java/org/spigotmc/netty/NettyServerConnection.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..cb58bd2
|
index 0000000..7a621aa
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/org/spigotmc/netty/NettyServerConnection.java
|
+++ b/src/main/java/org/spigotmc/netty/NettyServerConnection.java
|
||||||
@@ -0,0 +1,81 @@
|
@@ -0,0 +1,81 @@
|
||||||
@ -779,7 +779,7 @@ index 0000000..cb58bd2
|
|||||||
+
|
+
|
||||||
+ NettyNetworkManager networkManager = new NettyNetworkManager();
|
+ NettyNetworkManager networkManager = new NettyNetworkManager();
|
||||||
+ ch.pipeline()
|
+ ch.pipeline()
|
||||||
+ .addLast("flusher", new OutboundManager())
|
+ .addLast("flusher", new OutboundManager(networkManager))
|
||||||
+ .addLast("timer", new ReadTimeoutHandler(30))
|
+ .addLast("timer", new ReadTimeoutHandler(30))
|
||||||
+ .addLast("decoder", new PacketDecoder())
|
+ .addLast("decoder", new PacketDecoder())
|
||||||
+ .addLast("encoder", new PacketEncoder(networkManager))
|
+ .addLast("encoder", new PacketEncoder(networkManager))
|
||||||
@ -1072,26 +1072,36 @@ index 0000000..a3b86b8
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/org/spigotmc/netty/OutboundManager.java b/src/main/java/org/spigotmc/netty/OutboundManager.java
|
diff --git a/src/main/java/org/spigotmc/netty/OutboundManager.java b/src/main/java/org/spigotmc/netty/OutboundManager.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..758923c
|
index 0000000..5e7e950
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/org/spigotmc/netty/OutboundManager.java
|
+++ b/src/main/java/org/spigotmc/netty/OutboundManager.java
|
||||||
@@ -0,0 +1,19 @@
|
@@ -0,0 +1,29 @@
|
||||||
+package org.spigotmc.netty;
|
+package org.spigotmc.netty;
|
||||||
+
|
+
|
||||||
+import io.netty.channel.ChannelHandlerContext;
|
+import io.netty.channel.ChannelHandlerContext;
|
||||||
+import io.netty.channel.ChannelOperationHandlerAdapter;
|
+import io.netty.channel.ChannelOperationHandlerAdapter;
|
||||||
+import io.netty.channel.ChannelPromise;
|
+import io.netty.channel.ChannelPromise;
|
||||||
|
+import net.minecraft.server.PendingConnection;
|
||||||
+
|
+
|
||||||
+public class OutboundManager extends ChannelOperationHandlerAdapter {
|
+public class OutboundManager extends ChannelOperationHandlerAdapter
|
||||||
|
+{
|
||||||
+
|
+
|
||||||
+ private static final int FLUSH_TIME = 3;
|
+ private static final int FLUSH_TIME = 3;
|
||||||
+ private long lastFlush;
|
+ private long lastFlush;
|
||||||
|
+ private final NettyNetworkManager manager;
|
||||||
+ public boolean flushNow = false;
|
+ public boolean flushNow = false;
|
||||||
+
|
+
|
||||||
+ public void flush(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
|
+ OutboundManager(NettyNetworkManager manager)
|
||||||
+ if (flushNow || System.currentTimeMillis() - lastFlush > FLUSH_TIME) {
|
+ {
|
||||||
|
+ this.manager = manager;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public void flush(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception
|
||||||
|
+ {
|
||||||
|
+ if ( flushNow || manager.connection instanceof PendingConnection || System.currentTimeMillis() - lastFlush > FLUSH_TIME )
|
||||||
|
+ {
|
||||||
+ lastFlush = System.currentTimeMillis();
|
+ lastFlush = System.currentTimeMillis();
|
||||||
+ ctx.flush(promise);
|
+ ctx.flush( promise );
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
|
Loading…
Reference in New Issue
Block a user