diff --git a/transport/src/main/java/io/netty/channel/AbstractChannel.java b/transport/src/main/java/io/netty/channel/AbstractChannel.java index 6871ad3349..5383cb6e3c 100644 --- a/transport/src/main/java/io/netty/channel/AbstractChannel.java +++ b/transport/src/main/java/io/netty/channel/AbstractChannel.java @@ -470,8 +470,8 @@ public abstract class AbstractChannel extends DefaultAttributeMap implements Cha try { doBind(localAddress); } catch (Throwable t) { - closeIfClosed(); promise.setFailure(t); + closeIfClosed(); return; } if (!wasActive && isActive()) { @@ -491,8 +491,8 @@ public abstract class AbstractChannel extends DefaultAttributeMap implements Cha try { doDisconnect(); } catch (Throwable t) { - closeIfClosed(); promise.setFailure(t); + closeIfClosed(); return; } if (wasActive && !isActive()) { @@ -503,8 +503,8 @@ public abstract class AbstractChannel extends DefaultAttributeMap implements Cha } }); } - closeIfClosed(); // doDisconnect() might have closed the channel promise.setSuccess(); + closeIfClosed(); // doDisconnect() might have closed the channel } @Override diff --git a/transport/src/main/java/io/netty/channel/local/LocalChannel.java b/transport/src/main/java/io/netty/channel/local/LocalChannel.java index 276ff0995b..3cd018cc1b 100644 --- a/transport/src/main/java/io/netty/channel/local/LocalChannel.java +++ b/transport/src/main/java/io/netty/channel/local/LocalChannel.java @@ -35,6 +35,7 @@ import java.nio.channels.ClosedChannelException; import java.nio.channels.ConnectionPendingException; import java.nio.channels.NotYetConnectedException; import java.util.ArrayDeque; +import java.util.Collections; import java.util.Queue; /** @@ -293,9 +294,7 @@ public class LocalChannel extends AbstractChannel { peerLoop.execute(new Runnable() { @Override public void run() { - for (int i = 0; i < msgsCopy.length; i++) { - peer.inboundBuffer.add(msgsCopy[i]); - } + Collections.addAll(peer.inboundBuffer, msgsCopy); finishPeerRead(peer, peerPipeline); } }); @@ -350,7 +349,6 @@ public class LocalChannel extends AbstractChannel { doBind(localAddress); } catch (Throwable t) { promise.setFailure(t); - pipeline().fireExceptionCaught(t); close(voidPromise()); return; } diff --git a/transport/src/main/java/io/netty/channel/nio/AbstractNioChannel.java b/transport/src/main/java/io/netty/channel/nio/AbstractNioChannel.java index a30415c435..a5547f436a 100644 --- a/transport/src/main/java/io/netty/channel/nio/AbstractNioChannel.java +++ b/transport/src/main/java/io/netty/channel/nio/AbstractNioChannel.java @@ -210,8 +210,8 @@ public abstract class AbstractNioChannel extends AbstractChannel { newT.setStackTrace(t.getStackTrace()); t = newT; } - closeIfClosed(); promise.tryFailure(t); + closeIfClosed(); } } diff --git a/transport/src/main/java/io/netty/channel/oio/AbstractOioChannel.java b/transport/src/main/java/io/netty/channel/oio/AbstractOioChannel.java index 68ac919f35..a421425a9c 100644 --- a/transport/src/main/java/io/netty/channel/oio/AbstractOioChannel.java +++ b/transport/src/main/java/io/netty/channel/oio/AbstractOioChannel.java @@ -80,8 +80,8 @@ public abstract class AbstractOioChannel extends AbstractChannel { newT.setStackTrace(t.getStackTrace()); t = newT; } - closeIfClosed(); promise.setFailure(t); + closeIfClosed(); } } }