From 3c230a0fc456bd6ef3f5d2a5f398bd3445f2e1e9 Mon Sep 17 00:00:00 2001 From: Jeroen van Erp Date: Fri, 18 Mar 2016 13:11:59 +0100 Subject: [PATCH] Fixed potential race condition identified in #203 --- .../sshj/connection/channel/ChannelInputStream.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java b/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java index 76150fed..4205fd21 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java @@ -130,7 +130,12 @@ public final class ChannelInputStream buf.putRawBytes(data, offset, len); buf.notifyAll(); } - win.consume(len); + // Potential fix for #203 (window consumed below 0). + // This seems to be a race condition if we receive more data, while we're already sending a SSH_MSG_CHANNEL_WINDOW_ADJUST + // And the window has not expanded yet. + synchronized (win) { + win.consume(len); + } if (chan.getAutoExpand()) checkWindow(); } @@ -153,4 +158,4 @@ public final class ChannelInputStream return "< ChannelInputStream for Channel #" + chan.getID() + " >"; } -} \ No newline at end of file +}