X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/6d7b6081ac4c224f571fb7e90d437e3c118fae6c..f0359dd00d60d72c4b3dec85de8e490692f6015c:/io.c diff --git a/io.c b/io.c index 540ef2ab..6a55576d 100644 --- a/io.c +++ b/io.c @@ -159,6 +159,11 @@ static int read_timeout(int fd, char *buf, int len) continue; } + if (n == -1 && + (errno == EWOULDBLOCK || errno == EAGAIN)) { + continue; + } + if (n == 0) { if (eof_error) { @@ -364,12 +369,17 @@ static void writefd_unbuffered(int fd,char *buf,int len) if (FD_ISSET(fd, &w_fds)) { int ret, n = len-total; - ret = write(fd,buf+total,n?n:1); + ret = write(fd,buf+total,n); if (ret == -1 && errno == EINTR) { continue; } + if (ret == -1 && + (errno == EWOULDBLOCK || errno == EAGAIN)) { + continue; + } + if (ret <= 0) { rprintf(FERROR,"erroring writing %d bytes - exiting\n", len); exit_cleanup(RERR_STREAMIO); @@ -599,3 +609,4 @@ void io_close_input(int fd) { buffer_f_in = -1; } +