aboutsummaryrefslogtreecommitdiff
path: root/src/channels.c
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2011-08-06 10:31:43 +0200
committerAndreas Schneider <asn@cryptomilk.org>2011-08-06 11:11:12 +0200
commit563fbe4de8ee090b40b50415a86f9a3da16f46b0 (patch)
tree03080ec3c56aee324b11c190415c9e5647ecdeec /src/channels.c
parent39f962c91eb4575a65edc7d984ce3f1a699097b8 (diff)
downloadlibssh-563fbe4de8ee090b40b50415a86f9a3da16f46b0.tar.gz
libssh-563fbe4de8ee090b40b50415a86f9a3da16f46b0.tar.xz
libssh-563fbe4de8ee090b40b50415a86f9a3da16f46b0.zip
channels: Fix checking for fatal errors.
We need this that we don't end up in and infinite poll loop.
Diffstat (limited to 'src/channels.c')
-rw-r--r--src/channels.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/channels.c b/src/channels.c
index f01d52e8..ddccb97c 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1452,6 +1452,11 @@ static int channel_request(ssh_channel channel, const char *request,
}
while(channel->request_state == SSH_CHANNEL_REQ_STATE_PENDING){
ssh_handle_packets(session,-1);
+ if(session->session_state == SSH_SESSION_STATE_ERROR) {
+ channel->request_state = SSH_CHANNEL_REQ_STATE_ERROR;
+ break;
+ }
+
}
/* we received something */
switch (channel->request_state){