Make sure Channel connected event is not fired on connect failure. See #249

This commit is contained in:
norman 2012-04-04 07:40:50 +02:00
parent 049fb35bc1
commit db87c6ea37
2 changed files with 11 additions and 14 deletions

View File

@ -215,7 +215,6 @@ public class SctpWorker extends NioWorker {
protected void connect(SelectionKey k) {
final SctpClientChannel ch = (SctpClientChannel) k.attachment();
try {
// TODO: Remove cast
if (ch.getJdkChannel().finishConnect()) {
registerTask(ch, ch.connectFuture);
}
@ -359,6 +358,12 @@ public class SctpWorker extends NioWorker {
future.setSuccess();
}
if (!server) {
if (!((SctpClientChannel) channel).boundManually) {
fireChannelBound(channel, localAddress);
}
fireChannelConnected(channel, remoteAddress);
}
} catch (IOException e) {
if (future != null) {
future.setFailure(e);
@ -369,13 +374,6 @@ public class SctpWorker extends NioWorker {
"Failed to register a socket to the selector.", e);
}
}
if (!server) {
if (!((SctpClientChannel) channel).boundManually) {
fireChannelBound(channel, localAddress);
}
fireChannelConnected(channel, remoteAddress);
}
}
@Override

View File

@ -140,6 +140,10 @@ public class NioWorker extends SelectorEventLoop {
}
future.setSuccess();
}
if (server || !((NioClientSocketChannel) channel).boundManually) {
fireChannelBound(channel, localAddress);
}
fireChannelConnected(channel, remoteAddress);
} catch (IOException e) {
if (future != null) {
@ -151,11 +155,6 @@ public class NioWorker extends SelectorEventLoop {
"Failed to register a socket to the selector.", e);
}
}
if (server || !((NioClientSocketChannel) channel).boundManually) {
fireChannelBound(channel, localAddress);
}
fireChannelConnected(channel, remoteAddress);
}
}