X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fratequeue.c;h=21d6ec34f7ba00fb5e20ffafd98e40016c2827dc;hb=0717109bc9228681c931ccc461167dd22f302f28;hp=dc7e19879cf617a2713aa3b4e1efb5bd7c06ea04;hpb=57052193f089a4f126fad95e31e6ec5d099ce1e0;p=ashd.git diff --git a/src/ratequeue.c b/src/ratequeue.c index dc7e198..21d6ec3 100644 --- a/src/ratequeue.c +++ b/src/ratequeue.c @@ -25,6 +25,8 @@ #include #include #include +#include +#include #include #ifdef HAVE_CONFIG_H @@ -151,7 +153,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 +318,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)) {