summaryrefslogtreecommitdiff
path: root/clientloop.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>1999-12-07 15:38:31 +1100
committerDamien Miller <djm@mindrot.org>1999-12-07 15:38:31 +1100
commit037a0dc0835bb5a442bdcbeecdd5baed723f0b45 (patch)
treed02954d57ac437fd036e3e9544f24559ca8f0f0f /clientloop.c
parenteabf3417bc73ca9546a3ed489cd809ffdf303853 (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.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/clientloop.c b/clientloop.c
index 679180f58..bfa3019b6 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -15,7 +15,7 @@
15 */ 15 */
16 16
17#include "includes.h" 17#include "includes.h"
18RCSID("$Id: clientloop.c,v 1.6 1999/11/25 00:54:58 damien Exp $"); 18RCSID("$Id: clientloop.c,v 1.7 1999/12/07 04:38:32 damien Exp $");
19 19
20#include "xmalloc.h" 20#include "xmalloc.h"
21#include "ssh.h" 21#include "ssh.h"
@@ -466,13 +466,11 @@ client_suspend_self()
466 466
467 /* Flush stdout and stderr buffers. */ 467 /* Flush stdout and stderr buffers. */
468 if (buffer_len(&stdout_buffer) > 0) 468 if (buffer_len(&stdout_buffer) > 0)
469 write(fileno(stdout), 469 atomicio(write, fileno(stdout), buffer_ptr(&stdout_buffer),
470 buffer_ptr(&stdout_buffer), 470 buffer_len(&stdout_buffer));
471 buffer_len(&stdout_buffer));
472 if (buffer_len(&stderr_buffer) > 0) 471 if (buffer_len(&stderr_buffer) > 0)
473 write(fileno(stderr), 472 atomicio(write, fileno(stderr), buffer_ptr(&stderr_buffer),
474 buffer_ptr(&stderr_buffer), 473 buffer_len(&stderr_buffer));
475 buffer_len(&stderr_buffer));
476 474
477 leave_raw_mode(); 475 leave_raw_mode();
478 476
@@ -739,7 +737,7 @@ client_process_output(fd_set * writeset)
739 if (FD_ISSET(fileno(stdout), writeset)) { 737 if (FD_ISSET(fileno(stdout), writeset)) {
740 /* Write as much data as possible. */ 738 /* Write as much data as possible. */
741 len = write(fileno(stdout), buffer_ptr(&stdout_buffer), 739 len = write(fileno(stdout), buffer_ptr(&stdout_buffer),
742 buffer_len(&stdout_buffer)); 740 buffer_len(&stdout_buffer));
743 if (len <= 0) { 741 if (len <= 0) {
744 if (errno == EAGAIN) 742 if (errno == EAGAIN)
745 len = 0; 743 len = 0;
@@ -762,7 +760,7 @@ client_process_output(fd_set * writeset)
762 if (FD_ISSET(fileno(stderr), writeset)) { 760 if (FD_ISSET(fileno(stderr), writeset)) {
763 /* Write as much data as possible. */ 761 /* Write as much data as possible. */
764 len = write(fileno(stderr), buffer_ptr(&stderr_buffer), 762 len = write(fileno(stderr), buffer_ptr(&stderr_buffer),
765 buffer_len(&stderr_buffer)); 763 buffer_len(&stderr_buffer));
766 if (len <= 0) { 764 if (len <= 0) {
767 if (errno == EAGAIN) 765 if (errno == EAGAIN)
768 len = 0; 766 len = 0;
@@ -911,7 +909,7 @@ client_loop(int have_pty, int escape_char_arg)
911 /* Output any buffered data for stdout. */ 909 /* Output any buffered data for stdout. */
912 while (buffer_len(&stdout_buffer) > 0) { 910 while (buffer_len(&stdout_buffer) > 0) {
913 len = write(fileno(stdout), buffer_ptr(&stdout_buffer), 911 len = write(fileno(stdout), buffer_ptr(&stdout_buffer),
914 buffer_len(&stdout_buffer)); 912 buffer_len(&stdout_buffer));
915 if (len <= 0) { 913 if (len <= 0) {
916 error("Write failed flushing stdout buffer."); 914 error("Write failed flushing stdout buffer.");
917 break; 915 break;
@@ -922,7 +920,7 @@ client_loop(int have_pty, int escape_char_arg)
922 /* Output any buffered data for stderr. */ 920 /* Output any buffered data for stderr. */
923 while (buffer_len(&stderr_buffer) > 0) { 921 while (buffer_len(&stderr_buffer) > 0) {
924 len = write(fileno(stderr), buffer_ptr(&stderr_buffer), 922 len = write(fileno(stderr), buffer_ptr(&stderr_buffer),
925 buffer_len(&stderr_buffer)); 923 buffer_len(&stderr_buffer));
926 if (len <= 0) { 924 if (len <= 0) {
927 error("Write failed flushing stderr buffer."); 925 error("Write failed flushing stderr buffer.");
928 break; 926 break;