diff --git a/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java b/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java index 67fe32a1..dc0d2e9f 100644 --- a/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java +++ b/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java @@ -250,7 +250,7 @@ public class ConnectionImpl super.notifyDisconnect(); FutureUtils.alertAll(new ConnectionException("Disconnected."), globalReqFutures); for (Channel chan : channels.values()) - chan.close(); + chan.finishOff(); } } \ No newline at end of file diff --git a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java index ebe479f3..b3430894 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java @@ -302,8 +302,8 @@ public abstract class AbstractChannel rwin.expand(howMuch); } - /** Called when this channel's end-of-life has been reached. Subclasses may override but must call super. */ - protected void finishOff() { + @Override + public void finishOff() { conn.forget(this); close.set(); } diff --git a/src/main/java/net/schmizz/sshj/connection/channel/Channel.java b/src/main/java/net/schmizz/sshj/connection/channel/Channel.java index 420bb2ab..d9676be3 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/Channel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/Channel.java @@ -117,6 +117,9 @@ public interface Channel /** @return whether the channel is open. */ boolean isOpen(); + /** Called when this channel's end-of-life has been reached. Subclasses may override but must call super. */ + void finishOff(); + /** * Sends an EOF message to the server for this channel; indicating that no more data will be sent by us. The {@code * OutputStream} for this channel will be closed and no longer usable.