Fix NoSuchElementException raised by ChannelInitializer
This commit is contained in:
parent
5b68996f5a
commit
3c453f5dba
@ -60,22 +60,19 @@ public abstract class ChannelInitializer<C extends Channel> extends ChannelHandl
|
|||||||
*/
|
*/
|
||||||
protected abstract void initChannel(C ch) throws Exception;
|
protected abstract void initChannel(C ch) throws Exception;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public final void channelRegistered(ChannelHandlerContext ctx)
|
@SuppressWarnings("unchecked")
|
||||||
throws Exception {
|
public final void channelRegistered(ChannelHandlerContext ctx) throws Exception {
|
||||||
boolean removed = false;
|
|
||||||
boolean success = false;
|
boolean success = false;
|
||||||
try {
|
try {
|
||||||
initChannel((C) ctx.channel());
|
initChannel((C) ctx.channel());
|
||||||
ctx.pipeline().remove(this);
|
ctx.pipeline().remove(this);
|
||||||
removed = true;
|
|
||||||
ctx.fireChannelRegistered();
|
ctx.fireChannelRegistered();
|
||||||
success = true;
|
success = true;
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
logger.warn("Failed to initialize a channel. Closing: " + ctx.channel(), t);
|
logger.warn("Failed to initialize a channel. Closing: " + ctx.channel(), t);
|
||||||
} finally {
|
} finally {
|
||||||
if (!removed) {
|
if (!ctx.isRemoved()) {
|
||||||
ctx.pipeline().remove(this);
|
ctx.pipeline().remove(this);
|
||||||
}
|
}
|
||||||
if (!success) {
|
if (!success) {
|
||||||
|
Loading…
Reference in New Issue
Block a user