From: Wayne Davison Date: Wed, 9 Mar 2005 18:54:02 +0000 (+0000) Subject: - Made an overflow in read_vstring() return an error instead of dying. X-Git-Tag: v2.6.4pre3~41 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9a6ed83f2c4a455b19b49824d86f5308b45f5c88;p=thirdparty%2Frsync.git - Made an overflow in read_vstring() return an error instead of dying. - Got rid of a flush kluge that was needed for the name-pipe. --- diff --git a/io.c b/io.c index 16500731f..2321666dd 100644 --- a/io.c +++ b/io.c @@ -888,7 +888,7 @@ int read_vstring(int f, char *buf, int bufsize) if (len >= bufsize) { rprintf(FERROR, "over-long vstring received (%d > %d)\n", len, bufsize - 1); - exit_cleanup(RERR_PROTOCOL); + return -1; } if (len) @@ -1045,14 +1045,8 @@ static void writefd_unbuffered(int fd,char *buf,size_t len) if (msg_fd_in >= 0 && FD_ISSET(msg_fd_in, &r_fds)) read_msg_fd(); - if (!FD_ISSET(fd, &w_fds)) { - if (fd != sock_f_out && iobuf_out_cnt) { - no_flush--; - io_flush(NORMAL_FLUSH); - no_flush++; - } + if (!FD_ISSET(fd, &w_fds)) continue; - } n = len - total; if (bwlimit && n > bwlimit_writemax)