diff --git a/io.c b/io.c index 63df2504..66fd4c82 100644 --- a/io.c +++ b/io.c @@ -405,14 +405,14 @@ static void sleep_for_bwlimit(int bytes_written) if (!bwlimit) return; - - tv.tv_sec = 0; - tv.tv_usec = bytes_written * 1000 / bwlimit; - while (tv.tv_usec > 1000000) { - tv.tv_sec++; - tv.tv_usec -= 1000000; - } + assert(bytes_written > 0); + assert(bwlimit > 0); + + tv.tv_usec = bytes_written * 1000 / bwlimit; + tv.tv_sec = tv.tv_usec / 1000000; + tv.tv_usec = tv.tv_usec % 1000000; + select(0, NULL, NULL, NULL, tv); }