From: hniksic Date: Thu, 5 May 2005 09:48:08 +0000 (-0700) Subject: [svn] Reset the sleep_adjust limit value for new downloads. Fixes Debian bug X-Git-Tag: v1.13~1102 X-Git-Url: http://sjero.net/git/?p=wget;a=commitdiff_plain;h=91479b4c8ee7046e07e12848182fc635754c7a66 [svn] Reset the sleep_adjust limit value for new downloads. Fixes Debian bug 232276. --- diff --git a/src/ChangeLog b/src/ChangeLog index 83ac595b..58143fa8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2005-05-05 Hrvoje Niksic + + * retr.c (limit_bandwidth_reset): Reset sleep_adjust. + (limit_bandwidth): Don't allow huge "adjustment" values that + result from being suspended for a while. + 2005-05-04 Hrvoje Niksic * wget.h: If gettext was found but libtintl.h wasn't, declare diff --git a/src/retr.c b/src/retr.c index c5c1532b..493b830f 100644 --- a/src/retr.c +++ b/src/retr.c @@ -82,6 +82,7 @@ limit_bandwidth_reset (void) { limit_data.chunk_bytes = 0; limit_data.chunk_start = 0; + limit_data.sleep_adjust = 0; } /* Limit the bandwidth by pausing the download for an amount of time. @@ -125,6 +126,12 @@ limit_bandwidth (wgint bytes, struct ptimer *timer) desired and the actual sleep, and adjust the next sleep by that amount. */ limit_data.sleep_adjust = slp - (t1 - t0); + /* If sleep_adjust is very large, it's likely due to suspension + and not clock inaccuracy. Don't enforce those. */ + if (limit_data.sleep_adjust > 500) + limit_data.sleep_adjust = 500; + else if (limit_data.sleep_adjust < -500) + limit_data.sleep_adjust = -500; } limit_data.chunk_bytes = 0;