1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-07-28 01:41:48 +03:00

Fixes infinite loops

Thanks to Xi Wang for the patches
This commit is contained in:
Aris Adamantiadis
2010-04-24 22:46:19 +02:00
parent 833903e8ec
commit 6cdbc01208
3 changed files with 11 additions and 8 deletions

View File

@ -240,7 +240,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
channels[0]=NULL;
}
if(channels[0]){
while(channel && channel_is_open(channel) && channel_poll(channel,0)){
while(channel && channel_is_open(channel) && channel_poll(channel,0)>0){
lus=channel_read_buffer(channel,readbuf,0,0);
if(lus==-1){
fprintf(stderr, "Error reading channel: %s\n",
@ -259,7 +259,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
return;
}
}
while(channel && channel_is_open(channel) && channel_poll(channel,1)){ /* stderr */
while(channel && channel_is_open(channel) && channel_poll(channel,1)>0){ /* stderr */
lus=channel_read_buffer(channel,readbuf,0,1);
if(lus==-1){
fprintf(stderr, "Error reading channel: %s\n",
@ -332,7 +332,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
channels[0]=NULL;
}
if(outchannels[0]){
while(channel && channel_is_open(channel) && channel_poll(channel,0)){
while(channel && channel_is_open(channel) && channel_poll(channel,0)>0){
lus=channel_read(channel,buffer,sizeof(buffer),0);
if(lus==-1){
fprintf(stderr, "Error reading channel: %s\n",
@ -351,7 +351,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
return;
}
}
while(channel && channel_is_open(channel) && channel_poll(channel,1)){ /* stderr */
while(channel && channel_is_open(channel) && channel_poll(channel,1)>0){ /* stderr */
lus=channel_read(channel,buffer,sizeof(buffer),1);
if(lus==-1){
fprintf(stderr, "Error reading channel: %s\n",