ratequeue: Be consistent with signedness in rehash vs. hashget/hashdel.
[ashd.git] / src / ratequeue.c
index dc7e198..aa57b26 100644 (file)
@@ -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)) {