Fix NoSuchElementException raised by ChannelInitializer

This commit is contained in:
Trustin Lee 2013-12-07 00:39:21 +09:00
parent 5b68996f5a
commit 3c453f5dba

View File

@ -60,22 +60,19 @@ public abstract class ChannelInitializer<C extends Channel> 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 {
boolean success = false;
try {
initChannel((C) ctx.channel());
ctx.pipeline().remove(this);
removed = true;
ctx.fireChannelRegistered();
success = true;
} catch (Throwable t) {
logger.warn("Failed to initialize a channel. Closing: " + ctx.channel(), t);
} finally {
if (!removed) {
if (!ctx.isRemoved()) {
ctx.pipeline().remove(this);
}
if (!success) {