X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/0adb99b9dcbc5f5dbb0ee0ffb95df8b3710fcc22..69c6522734897c0b81b184c5ebcc6cd9461f6da3:/io.c diff --git a/io.c b/io.c index fbaf6a3a..20fc2ba3 100644 --- a/io.c +++ b/io.c @@ -27,6 +27,8 @@ /* if no timeout is specified then use a 60 second select timeout */ #define SELECT_TIMEOUT 60 +extern int bwlimit; + static int io_multiplexing_out; static int io_multiplexing_in; static int multiplex_in_fd; @@ -388,6 +390,19 @@ static void writefd_unbuffered(int fd,char *buf,int len) exit_cleanup(RERR_STREAMIO); } + /* Sleep after writing to limit I/O bandwidth */ + if (bwlimit) + { + tv.tv_sec = 0; + tv.tv_usec = ret * 1000 / bwlimit; + while (tv.tv_usec > 1000000) + { + tv.tv_sec++; + tv.tv_usec -= 1000000; + } + select(0, NULL, NULL, NULL, &tv); + } + total += ret; if (io_timeout)