diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | clientloop.c | 18 |
2 files changed, 12 insertions, 12 deletions
@@ -11,6 +11,10 @@ | |||
11 | - mouring@cvs.openbsd.org 2001/05/08 19:45:25 | 11 | - mouring@cvs.openbsd.org 2001/05/08 19:45:25 |
12 | [misc.c misc.h scp.c sftp.c] | 12 | [misc.c misc.h scp.c sftp.c] |
13 | Use addargs() in sftp plus some clean up of addargs(). OK Markus | 13 | Use addargs() in sftp plus some clean up of addargs(). OK Markus |
14 | - markus@cvs.openbsd.org 2001/05/06 21:45:14 | ||
15 | [clientloop.c] | ||
16 | use atomicio for flushing stdout/stderr bufs. thanks to | ||
17 | jbw@izanami.cee.hw.ac.uk | ||
14 | - (bal) UseLogin patch for Solaris/UNICOS. Patch by Wayne Davison | 18 | - (bal) UseLogin patch for Solaris/UNICOS. Patch by Wayne Davison |
15 | <wayne@blorf.net> | 19 | <wayne@blorf.net> |
16 | - (bal) ./configure support to disable SIA on OSF1. Patch by | 20 | - (bal) ./configure support to disable SIA on OSF1. Patch by |
@@ -5375,4 +5379,4 @@ | |||
5375 | - Wrote replacements for strlcpy and mkdtemp | 5379 | - Wrote replacements for strlcpy and mkdtemp |
5376 | - Released 1.0pre1 | 5380 | - Released 1.0pre1 |
5377 | 5381 | ||
5378 | $Id: ChangeLog,v 1.1210 2001/05/08 20:42:28 mouring Exp $ | 5382 | $Id: ChangeLog,v 1.1211 2001/05/08 23:58:37 mouring Exp $ |
diff --git a/clientloop.c b/clientloop.c index 2bc5b54aa..3294b0cfe 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.67 2001/05/04 23:47:34 markus Exp $"); | 62 | RCSID("$OpenBSD: clientloop.c,v 1.68 2001/05/06 21:45:14 markus Exp $"); |
63 | 63 | ||
64 | #include "ssh.h" | 64 | #include "ssh.h" |
65 | #include "ssh1.h" | 65 | #include "ssh1.h" |
@@ -936,25 +936,21 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) | |||
936 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 936 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
937 | } | 937 | } |
938 | /* Output any buffered data for stdout. */ | 938 | /* Output any buffered data for stdout. */ |
939 | while (buffer_len(&stdout_buffer) > 0) { | 939 | if (buffer_len(&stdout_buffer) > 0) { |
940 | len = write(fileno(stdout), buffer_ptr(&stdout_buffer), | 940 | len = atomicio(write, fileno(stdout), buffer_ptr(&stdout_buffer), |
941 | buffer_len(&stdout_buffer)); | 941 | buffer_len(&stdout_buffer)); |
942 | if (len <= 0) { | 942 | if (len != buffer_len(&stdout_buffer)) |
943 | error("Write failed flushing stdout buffer."); | 943 | error("Write failed flushing stdout buffer."); |
944 | break; | ||
945 | } | ||
946 | buffer_consume(&stdout_buffer, len); | 944 | buffer_consume(&stdout_buffer, len); |
947 | stdout_bytes += len; | 945 | stdout_bytes += len; |
948 | } | 946 | } |
949 | 947 | ||
950 | /* Output any buffered data for stderr. */ | 948 | /* Output any buffered data for stderr. */ |
951 | while (buffer_len(&stderr_buffer) > 0) { | 949 | if (buffer_len(&stderr_buffer) > 0) { |
952 | len = write(fileno(stderr), buffer_ptr(&stderr_buffer), | 950 | len = atomicio(write, fileno(stderr), buffer_ptr(&stderr_buffer), |
953 | buffer_len(&stderr_buffer)); | 951 | buffer_len(&stderr_buffer)); |
954 | if (len <= 0) { | 952 | if (len != buffer_len(&stderr_buffer)) |
955 | error("Write failed flushing stderr buffer."); | 953 | error("Write failed flushing stderr buffer."); |
956 | break; | ||
957 | } | ||
958 | buffer_consume(&stderr_buffer, len); | 954 | buffer_consume(&stderr_buffer, len); |
959 | stderr_bytes += len; | 955 | stderr_bytes += len; |
960 | } | 956 | } |