diff options
author | Damien Miller <djm@mindrot.org> | 1999-12-07 15:38:31 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 1999-12-07 15:38:31 +1100 |
commit | 037a0dc0835bb5a442bdcbeecdd5baed723f0b45 (patch) | |
tree | d02954d57ac437fd036e3e9544f24559ca8f0f0f /clientloop.c | |
parent | eabf3417bc73ca9546a3ed489cd809ffdf303853 (diff) |
- Merged more OpenBSD changes:
- [atomicio.c authfd.c scp.c serverloop.c ssh.h sshconnect.c sshd.c]
move atomicio into it's own file. wrap all socket write()s which
were doing write(sock, buf, len) != len, with atomicio() calls.
- [auth-skey.c]
fd leak
- [authfile.c]
properly name fd variable
- [channels.c]
display great hatred towards strcpy
- [pty.c pty.h sshd.c]
use openpty() if it exists (it does on BSD4_4)
- [tildexpand.c]
check for ~ expansion past MAXPATHLEN
- Modified helper.c to use new atomicio function.
- Reformat Makefile a little
- Moved RC4 routines from rc4.[ch] into helper.c
- Added autoconf code to detect /dev/ptmx (Solaris) and /dev/ptc (AIX)
Diffstat (limited to 'clientloop.c')
-rw-r--r-- | clientloop.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/clientloop.c b/clientloop.c index 679180f5..bfa3019b 100644 --- a/clientloop.c +++ b/clientloop.c @@ -15,7 +15,7 @@ */ #include "includes.h" -RCSID("$Id: clientloop.c,v 1.6 1999/11/25 00:54:58 damien Exp $"); +RCSID("$Id: clientloop.c,v 1.7 1999/12/07 04:38:32 damien Exp $"); #include "xmalloc.h" #include "ssh.h" @@ -466,13 +466,11 @@ client_suspend_self() /* Flush stdout and stderr buffers. */ if (buffer_len(&stdout_buffer) > 0) - write(fileno(stdout), - buffer_ptr(&stdout_buffer), - buffer_len(&stdout_buffer)); + atomicio(write, fileno(stdout), buffer_ptr(&stdout_buffer), + buffer_len(&stdout_buffer)); if (buffer_len(&stderr_buffer) > 0) - write(fileno(stderr), - buffer_ptr(&stderr_buffer), - buffer_len(&stderr_buffer)); + atomicio(write, fileno(stderr), buffer_ptr(&stderr_buffer), + buffer_len(&stderr_buffer)); leave_raw_mode(); @@ -739,7 +737,7 @@ client_process_output(fd_set * writeset) if (FD_ISSET(fileno(stdout), writeset)) { /* Write as much data as possible. */ len = write(fileno(stdout), buffer_ptr(&stdout_buffer), - buffer_len(&stdout_buffer)); + buffer_len(&stdout_buffer)); if (len <= 0) { if (errno == EAGAIN) len = 0; @@ -762,7 +760,7 @@ client_process_output(fd_set * writeset) if (FD_ISSET(fileno(stderr), writeset)) { /* Write as much data as possible. */ len = write(fileno(stderr), buffer_ptr(&stderr_buffer), - buffer_len(&stderr_buffer)); + buffer_len(&stderr_buffer)); if (len <= 0) { if (errno == EAGAIN) len = 0; @@ -911,7 +909,7 @@ client_loop(int have_pty, int escape_char_arg) /* Output any buffered data for stdout. */ while (buffer_len(&stdout_buffer) > 0) { len = write(fileno(stdout), buffer_ptr(&stdout_buffer), - buffer_len(&stdout_buffer)); + buffer_len(&stdout_buffer)); if (len <= 0) { error("Write failed flushing stdout buffer."); break; @@ -922,7 +920,7 @@ client_loop(int have_pty, int escape_char_arg) /* Output any buffered data for stderr. */ while (buffer_len(&stderr_buffer) > 0) { len = write(fileno(stderr), buffer_ptr(&stderr_buffer), - buffer_len(&stderr_buffer)); + buffer_len(&stderr_buffer)); if (len <= 0) { error("Write failed flushing stderr buffer."); break; |