diff options
author | rofl0r <retnyg@gmx.net> | 2011-08-05 03:00:21 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-08-07 12:47:09 +0200 |
commit | 61a97ccedef470e587798fee52fb011e8d9c323a (patch) | |
tree | 180a8cb7a5976adb205474c3e9e400b2658d8b7e /src/channels.c | |
parent | a1ef27c0b882d0791ab29584f015d1f8bee44996 (diff) | |
download | libssh-61a97ccedef470e587798fee52fb011e8d9c323a.tar.gz libssh-61a97ccedef470e587798fee52fb011e8d9c323a.tar.xz libssh-61a97ccedef470e587798fee52fb011e8d9c323a.zip |
session: Fix timeout handling.
-2 now means to use the timeout specified in options. It wasn't used
earlier and poll only knows -1 and 0 anyway for special meanings.
(cherry picked from commit af85337f5ff052437fa5cf117f3d065488640660)
Diffstat (limited to 'src/channels.c')
-rw-r--r-- | src/channels.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/channels.c b/src/channels.c index 916b84a1..22de5cd3 100644 --- a/src/channels.c +++ b/src/channels.c @@ -292,7 +292,7 @@ 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,-1); + ssh_handle_packets(session, -2); } if(channel->state == SSH_CHANNEL_STATE_OPEN) err=SSH_OK; @@ -1421,7 +1421,7 @@ static int channel_request(ssh_channel channel, const char *request, return SSH_OK; } while(channel->request_state == SSH_CHANNEL_REQ_STATE_PENDING){ - ssh_handle_packets(session,-1); + ssh_handle_packets(session, -2); if(session->session_state == SSH_SESSION_STATE_ERROR) { channel->request_state = SSH_CHANNEL_REQ_STATE_ERROR; break; @@ -1743,7 +1743,7 @@ static ssh_channel ssh_channel_accept(ssh_session session, int channeltype, for (t = timeout_ms; t >= 0; t -= 50) { - ssh_handle_packets(session,50); + ssh_handle_packets(session, 50); if (session->ssh_message_list) { iterator = ssh_list_get_iterator(session->ssh_message_list); @@ -1900,7 +1900,7 @@ static int global_request(ssh_session session, const char *request, return SSH_OK; } while(session->global_req_state == SSH_CHANNEL_REQ_STATE_PENDING){ - rc=ssh_handle_packets(session,-1); + rc=ssh_handle_packets(session, -2); if(rc==SSH_ERROR){ session->global_req_state = SSH_CHANNEL_REQ_STATE_ERROR; break; @@ -2284,7 +2284,7 @@ int channel_read_buffer(ssh_channel channel, ssh_buffer buffer, uint32_t count, leave_function(); return 0; } - ssh_handle_packets(channel->session, -1); + ssh_handle_packets(channel->session, -2); } while (r == 0); } while(total < count){ @@ -2382,7 +2382,7 @@ int ssh_channel_read(ssh_channel channel, void *dest, uint32_t count, int is_std break; } - ssh_handle_packets(session,-1); + ssh_handle_packets(session, -2); } len = buffer_get_rest_len(stdbuf); @@ -2472,7 +2472,7 @@ int ssh_channel_poll(ssh_channel channel, int is_stderr){ } if (buffer_get_rest_len(stdbuf) == 0 && channel->remote_eof == 0) { - if (ssh_handle_packets(channel->session,0)==SSH_ERROR) { + if (ssh_handle_packets(channel->session, 0)==SSH_ERROR) { leave_function(); return SSH_ERROR; } @@ -2519,7 +2519,7 @@ int ssh_channel_get_exit_status(ssh_channel channel) { while ((channel->remote_eof == 0 || channel->exit_status == -1) && channel->session->alive) { /* Parse every incoming packet */ - if (ssh_handle_packets(channel->session,-1) != SSH_OK) { + if (ssh_handle_packets(channel->session, -2) != SSH_OK) { return -1; } /* XXX We should actually wait for a close packet and not a close @@ -2554,7 +2554,7 @@ static int channel_protocol_select(ssh_channel *rchans, ssh_channel *wchans, chan = rchans[i]; while (ssh_channel_is_open(chan) && ssh_socket_data_available(chan->session->socket)) { - ssh_handle_packets(chan->session,-1); + ssh_handle_packets(chan->session, -2); } if ((chan->stdout_buffer && buffer_get_rest_len(chan->stdout_buffer) > 0) || |