From 74e162c67fca502cca1213de6345db7fe8e24d05 Mon Sep 17 00:00:00 2001 From: Anderson Toshiyuki Sasaki Date: Thu, 18 Jun 2020 19:08:54 +0200 Subject: [PATCH] channel: Do not return error if the server closed the channel If the server properly closed the channel, the client should not return error if it finds the channel closed. Fixes T231 Signed-off-by: Anderson Toshiyuki Sasaki Reviewed-by: Jakub Jelen (cherry picked from commit 750e4f3f9d3ec879929801d65a500ec3ad84ff67) --- src/channels.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/channels.c b/src/channels.c index 1f00be27..4eea885b 100644 --- a/src/channels.c +++ b/src/channels.c @@ -2932,15 +2932,16 @@ int ssh_channel_read_timeout(ssh_channel channel, if (session->session_state == SSH_SESSION_STATE_ERROR) { return SSH_ERROR; } + /* If the server closed the channel properly, there is nothing to do */ + if (channel->remote_eof && ssh_buffer_get_len(stdbuf) == 0) { + return 0; + } if (channel->state == SSH_CHANNEL_STATE_CLOSED) { ssh_set_error(session, SSH_FATAL, "Remote channel is closed."); return SSH_ERROR; } - if (channel->remote_eof && ssh_buffer_get_len(stdbuf) == 0) { - return 0; - } len = ssh_buffer_get_len(stdbuf); /* Read count bytes if len is greater, everything otherwise */ len = (len > count ? count : len);