=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/channels.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- src/usr.bin/ssh/channels.c 2000/05/01 18:31:27 1.52 +++ src/usr.bin/ssh/channels.c 2000/05/01 19:11:35 1.53 @@ -17,7 +17,7 @@ */ #include "includes.h" -RCSID("$Id: channels.c,v 1.52 2000/05/01 18:31:27 markus Exp $"); +RCSID("$Id: channels.c,v 1.53 2000/05/01 19:11:35 markus Exp $"); #include "ssh.h" #include "packet.h" @@ -632,6 +632,8 @@ if (c->rfd != -1 && FD_ISSET(c->rfd, readset)) { len = read(c->rfd, buf, sizeof(buf)); + if (len < 0 && (errno == EINTR || errno == EAGAIN)) + return 1; if (len <= 0) { debug("channel %d: read<=0 rfd %d len %d", c->self, c->rfd, len); @@ -658,7 +660,9 @@ FD_ISSET(c->wfd, writeset) && buffer_len(&c->output) > 0) { len = write(c->wfd, buffer_ptr(&c->output), - buffer_len(&c->output)); + buffer_len(&c->output)); + if (len < 0 && (errno == EINTR || errno == EAGAIN)) + return 1; if (len <= 0) { if (compat13) { buffer_consume(&c->output, buffer_len(&c->output));