diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index 2c9f55c9..84ca1eae 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -334,7 +334,7 @@ public final class UserConnection implements ProxiedPlayer { Preconditions.checkNotNull( request, "request" ); - ch.getHandle().eventLoop().execute( () -> connect0( request ) ); + ch.scheduleIfNecessary( () -> connect0( request ) ); } private void connect0(final ServerConnectRequest request) diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java index 7c0c2a02..173107a7 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java @@ -2,7 +2,6 @@ package net.md_5.bungee.connection; import com.google.common.base.Preconditions; import com.google.gson.Gson; -import io.netty.channel.EventLoop; import java.math.BigInteger; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -901,17 +900,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection { return (result, error) -> { - EventLoop eventLoop = ch.getHandle().eventLoop(); - if ( eventLoop.inEventLoop() ) - { - if ( !ch.isClosing() ) - { - callback.done( result, error ); - } - return; - } - - eventLoop.execute( () -> + ch.scheduleIfNecessary( () -> { if ( !ch.isClosing() ) { diff --git a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java index cdad6d9e..94ec569b 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java @@ -238,6 +238,12 @@ public class ChannelWrapper return; } - ch.eventLoop().execute( task ); + ch.eventLoop().submit( task ).addListener( future -> + { + if ( !future.isSuccess() ) + { + ch.pipeline().fireExceptionCaught( future.cause() ); + } + } ); } }