X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=blobdiff_plain;f=src%2Fratequeue.c;h=aa57b2682a7d1b2ccc6dbb68cd91a8a1273fed23;hp=dc7e19879cf617a2713aa3b4e1efb5bd7c06ea04;hb=1a53e57ba22759dbb373d7f97625b9a51fa6656a;hpb=57052193f089a4f126fad95e31e6ec5d099ce1e0 diff --git a/src/ratequeue.c b/src/ratequeue.c index dc7e198..aa57b26 100644 --- a/src/ratequeue.c +++ b/src/ratequeue.c @@ -151,7 +151,7 @@ static const char *formatsrc(const struct source *src) static void rehash(int nlen) { - int i, o, n, m, pl, nl; + unsigned int i, o, n, m, pl, nl; struct bucket **new, **old; old = buckets; @@ -316,9 +316,9 @@ static void tickbucket(struct bucket *bk) bk->last = now; ll = bk->level; if((bk->level -= delta * cf.rate) < 0) { - bk->level = 0; if(ll > 0) - bk->etime = now; + bk->etime = now + (bk->level / cf.rate); + bk->level = 0; } while((bk->brim.d > 0) && (bk->level < cf.size)) { if(sendreq(child, bk->brim.b[0].req, bk->brim.b[0].fd)) {