Repository: mina-sshd Updated Branches: refs/heads/master 9208a8d26 -> 63a8ddc2a
[SSHD-761] The agent forwarding channel is not closed at the end of the session Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/63a8ddc2 Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/63a8ddc2 Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/63a8ddc2 Branch: refs/heads/master Commit: 63a8ddc2a945640859dc989b2c71c5f5327c77c5 Parents: 9208a8d Author: Li Fangning <lifang...@hotmail.com> Authored: Tue Aug 8 08:53:31 2017 +0300 Committer: Goldstein Lyor <l...@c-b4.com> Committed: Tue Aug 8 08:56:01 2017 +0300 ---------------------------------------------------------------------- .../agent/local/ChannelAgentForwarding.java | 26 ++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/63a8ddc2/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java index 7aeb35b..b7becde 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java @@ -76,13 +76,35 @@ public class ChannelAgentForwarding extends AbstractServerChannel { return f; } + @Override + public void handleEof() throws IOException { + // Close agent forwarding channel + try { + if ((agent != null) && agent.isOpen()) { + agent.close(); + } + } finally { + super.handleEof(); + } + } + private void closeImmediately0() { // We need to close the channel immediately to remove it from the // server session's channel table and *not* send a packet to the // client. A notification was already sent by our caller, or will // be sent after we return. - // - super.close(true); + try { + if ((agent != null) && agent.isOpen()) { + try { + agent.close(); + } catch (IOException e) { + log.error("closeImmediately0({}) Failed ({}) to close open local agent: {}", + this, e.getClass().getSimpleName(), e.getMessage()); + } + } + } finally { + super.close(true); + } } @Override