[#1654] Notify close future after the close was complete

This commit is contained in:
Norman Maurer 2013-07-26 14:21:11 +02:00
parent cffbba94ee
commit 15279b2525

View File

@ -515,15 +515,22 @@ public abstract class AbstractChannel extends DefaultAttributeMap implements Cha
return;
}
if (closeFuture.isDone()) {
// Closed already.
promise.setSuccess();
return;
}
boolean wasActive = isActive();
if (closeFuture.setClosed()) {
ChannelOutboundBuffer outboundBuffer = this.outboundBuffer;
this.outboundBuffer = null; // Disallow adding any messages and flushes to outboundBuffer.
try {
doClose();
closeFuture.setClosed();
promise.setSuccess();
} catch (Throwable t) {
closeFuture.setClosed();
promise.setFailure(t);
}
@ -544,10 +551,6 @@ public abstract class AbstractChannel extends DefaultAttributeMap implements Cha
deregister(voidPromise());
}
} else {
// Closed already.
promise.setSuccess();
}
}
@Override