From 2bb52fcf7dfd63b80f2498e231c4e4d994d038b2 Mon Sep 17 00:00:00 2001 From: Jeroen van Erp Date: Tue, 14 Apr 2020 22:23:35 +0200 Subject: [PATCH] Add checks for Channel.isOpen to ChannelOutputStream (Fixes #440) --- .../sshj/connection/channel/ChannelOutputStream.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java b/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java index 0695d0b8..ad30493f 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java @@ -150,7 +150,8 @@ public final class ChannelOutputStream extends OutputStream implements ErrorNoti } private void checkClose() throws SSHException { - if (closed) { + // Check whether either the Stream is closed, or the underlying channel is closed + if (closed || !chan.isOpen()) { if (error != null) throw error; else @@ -160,7 +161,8 @@ public final class ChannelOutputStream extends OutputStream implements ErrorNoti @Override public synchronized void close() throws IOException { - if (!closed) { + // Not closed yet, and underlying channel is open to flush the data to. + if (!closed && chan.isOpen()) { try { buffer.flush(false); // trans.write(new SSHPacket(Message.CHANNEL_EOF).putUInt32(chan.getRecipient()));