Repository: mina-sshd Updated Branches: refs/heads/master f5acda557 -> 654bb269f
Use a more descriptive exception when canceling pending asynchronous write requests due to immediate session close Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/654bb269 Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/654bb269 Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/654bb269 Branch: refs/heads/master Commit: 654bb269f4440b0c0ecb62a5e5be536d520a02e9 Parents: f5acda5 Author: Lyor Goldstein <lyor.goldst...@gmail.com> Authored: Wed Oct 4 16:17:42 2017 +0300 Committer: Lyor Goldstein <lyor.goldst...@gmail.com> Committed: Wed Oct 4 16:17:42 2017 +0300 ---------------------------------------------------------------------- .../main/java/org/apache/sshd/common/io/nio2/Nio2Session.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/654bb269/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java index da07efd..0401224 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java @@ -19,6 +19,7 @@ package org.apache.sshd.common.io.nio2; import java.io.IOException; +import java.io.WriteAbortedException; import java.net.SocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousSocketChannel; @@ -193,9 +194,13 @@ public class Nio2Session extends AbstractCloseable implements IoSession { @Override protected void doCloseImmediately() { for (;;) { + // Cancel pending requests informing them of the cancellation Nio2DefaultIoWriteFuture future = writes.poll(); if (future != null) { - future.setException(new ClosedChannelException()); + Throwable error = future.getException(); + if (error == null) { + future.setException(new WriteAbortedException("Write request aborted due to immediate session close", null)); + } } else { break; }