X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/bd7e05d7996e67cf12a0b01fe9286ef2813432f4..8cd9fd4e8c293047162784ae08c12be3636b9353:/io.c diff --git a/io.c b/io.c index c42c1c7e..3ea09e12 100644 --- a/io.c +++ b/io.c @@ -24,6 +24,9 @@ */ #include "rsync.h" +/* if no timeout is specified then use a 60 second select timeout */ +#define SELECT_TIMEOUT 60 + static int io_multiplexing_out; static int io_multiplexing_in; static int multiplex_in_fd; @@ -83,11 +86,10 @@ static int read_timeout(int fd, char *buf, int len) FD_ZERO(&fds); FD_SET(fd, &fds); - tv.tv_sec = io_timeout; + tv.tv_sec = io_timeout?io_timeout:SELECT_TIMEOUT; tv.tv_usec = 0; - if (select(fd+1, &fds, NULL, NULL, - io_timeout?&tv:NULL) != 1) { + if (select(fd+1, &fds, NULL, NULL, &tv) != 1) { check_timeout(); continue; } @@ -119,7 +121,7 @@ static int read_timeout(int fd, char *buf, int len) if (n == 0) { if (eof_error) { - rprintf(FERROR,"EOF in read_timeout\n"); + rprintf(FERROR,"unexpected EOF in read_timeout\n"); } exit_cleanup(1); } @@ -238,7 +240,7 @@ static void readfd(int fd,char *buffer,int N) int ret; int total=0; - if (read_buffer_len < N && N < 1024) { + if ((read_buffer_len < N) && (N < 1024)) { read_check(buffer_f_in); } @@ -338,13 +340,13 @@ static void writefd_unbuffered(int fd,char *buf,int len) fd_count = buffer_f_in+1; } - tv.tv_sec = io_timeout; + tv.tv_sec = io_timeout?io_timeout:SELECT_TIMEOUT; tv.tv_usec = 0; count = select(fd_count, reading?&r_fds:NULL, &w_fds,NULL, - io_timeout?&tv:NULL); + &tv); if (count <= 0) { check_timeout();