diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2011-08-09 22:59:17 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-08-09 22:59:17 +0200 |
commit | 2f878736427f5fd846f8ebb0c834e6a65bf8a638 (patch) | |
tree | acb26e0e8d281ff5089209f3166cc3d2c3eb355f /src/channels.c | |
parent | 6c45d6dc0196a2846313b588c0e05996813ab3f8 (diff) | |
download | libssh-2f878736427f5fd846f8ebb0c834e6a65bf8a638.tar.gz libssh-2f878736427f5fd846f8ebb0c834e6a65bf8a638.tar.xz libssh-2f878736427f5fd846f8ebb0c834e6a65bf8a638.zip |
channels: Handle SSH_AGAIN in channel_open().
Diffstat (limited to 'src/channels.c')
-rw-r--r-- | src/channels.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/channels.c b/src/channels.c index fb57be03..6a616ade 100644 --- a/src/channels.c +++ b/src/channels.c @@ -296,11 +296,14 @@ static int channel_open(ssh_channel channel, const char *type_c, int window, /* Todo: fix this into a correct loop */ /* 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; - } + err = ssh_handle_packets(session, -2); + if (err != SSH_OK) { + break; + } + if (session->session_state == SSH_SESSION_STATE_ERROR) { + err = SSH_ERROR; + break; + } } if(channel->state == SSH_CHANNEL_STATE_OPEN) err=SSH_OK; |