summaryrefslogtreecommitdiffstats
path: root/src/channels.c
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2011-08-05 03:00:21 +0200
committerAndreas Schneider <asn@cryptomilk.org>2011-08-07 12:47:09 +0200
commit61a97ccedef470e587798fee52fb011e8d9c323a (patch)
tree180a8cb7a5976adb205474c3e9e400b2658d8b7e /src/channels.c
parenta1ef27c0b882d0791ab29584f015d1f8bee44996 (diff)
downloadlibssh-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.c18
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) ||