aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2011-08-05 03:05:22 +0200
committerAndreas Schneider <asn@cryptomilk.org>2011-08-07 12:47:17 +0200
commitb542bc9e4e0cda2d86f6ddf95b31e6b9fbc20a96 (patch)
tree1ebc51072d91d6db222c94b76fd1f0f57ca74af1
parent61a97ccedef470e587798fee52fb011e8d9c323a (diff)
downloadlibssh-b542bc9e4e0cda2d86f6ddf95b31e6b9fbc20a96.tar.gz
libssh-b542bc9e4e0cda2d86f6ddf95b31e6b9fbc20a96.tar.xz
libssh-b542bc9e4e0cda2d86f6ddf95b31e6b9fbc20a96.zip
channels: Fix an endless loop in case of a channel_open error.
(cherry picked from commit 7ccd9c31b33798824b27e4af095b52b9026a1f98)
-rw-r--r--src/channels.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/channels.c b/src/channels.c
index 22de5cd3..b6ad996e 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -293,6 +293,10 @@ static int channel_open(ssh_channel channel, const char *type_c, int window,
/* wait until channel is opened by server */
while(channel->state == SSH_CHANNEL_STATE_NOT_OPEN){
ssh_handle_packets(session, -2);
+ if (session->session_state == SSH_SESSION_STATE_ERROR) {
+ err = SSH_ERROR;
+ break;
+ }
}
if(channel->state == SSH_CHANNEL_STATE_OPEN)
err=SSH_OK;