diff options
Diffstat (limited to 'clientloop.c')
-rw-r--r-- | clientloop.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/clientloop.c b/clientloop.c index 43332d1f4..0e477bc79 100644 --- a/clientloop.c +++ b/clientloop.c | |||
@@ -59,7 +59,7 @@ | |||
59 | */ | 59 | */ |
60 | 60 | ||
61 | #include "includes.h" | 61 | #include "includes.h" |
62 | RCSID("$OpenBSD: clientloop.c,v 1.83 2001/10/10 22:18:47 markus Exp $"); | 62 | RCSID("$OpenBSD: clientloop.c,v 1.84 2001/10/11 15:24:00 markus Exp $"); |
63 | 63 | ||
64 | #include "ssh.h" | 64 | #include "ssh.h" |
65 | #include "ssh1.h" | 65 | #include "ssh1.h" |
@@ -343,9 +343,12 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, | |||
343 | FD_SET(fileno(stderr), *writesetp); | 343 | FD_SET(fileno(stderr), *writesetp); |
344 | } else { | 344 | } else { |
345 | /* channel_prepare_select could have closed the last channel */ | 345 | /* channel_prepare_select could have closed the last channel */ |
346 | if (session_closed && !channel_still_open()) { | 346 | if (session_closed && !channel_still_open() && |
347 | if (!packet_have_data_to_write()) | 347 | !packet_have_data_to_write()) { |
348 | return; | 348 | /* clear mask since we did not call select() */ |
349 | memset(*readsetp, 0, *maxfdp); | ||
350 | memset(*writesetp, 0, *maxfdp); | ||
351 | return; | ||
349 | } else { | 352 | } else { |
350 | FD_SET(connection_in, *readsetp); | 353 | FD_SET(connection_in, *readsetp); |
351 | } | 354 | } |