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

Reply via email to