From 524726fd9900cd3c555542bd36b7d8d6102bb6db Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Sat, 7 Dec 2013 11:03:55 +0900 Subject: [PATCH] Fix NoSuchElementException raised by ChannelInitializer .. again. --- .../java/io/netty/channel/ChannelInitializer.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/transport/src/main/java/io/netty/channel/ChannelInitializer.java b/transport/src/main/java/io/netty/channel/ChannelInitializer.java index 2145a10bca..80567fde50 100644 --- a/transport/src/main/java/io/netty/channel/ChannelInitializer.java +++ b/transport/src/main/java/io/netty/channel/ChannelInitializer.java @@ -60,23 +60,21 @@ public abstract class ChannelInitializer extends ChannelHandl */ protected abstract void initChannel(C ch) throws Exception; - @SuppressWarnings("unchecked") @Override - public final void channelRegistered(ChannelHandlerContext ctx) - throws Exception { - boolean removed = false; + @SuppressWarnings("unchecked") + public final void channelRegistered(ChannelHandlerContext ctx) throws Exception { + ChannelPipeline pipeline = ctx.pipeline(); boolean success = false; try { initChannel((C) ctx.channel()); - ctx.pipeline().remove(this); - removed = true; + pipeline.remove(this); ctx.fireChannelRegistered(); success = true; } catch (Throwable t) { logger.warn("Failed to initialize a channel. Closing: " + ctx.channel(), t); } finally { - if (!removed) { - ctx.pipeline().remove(this); + if (pipeline.context(this) != null) { + pipeline.remove(this); } if (!success) { ctx.close();