diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-08-24 16:17:56 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-08-24 16:17:56 -0400 |
commit | 2cbe115cbcdd47d954fa47a96c206c5c6ee63ddc (patch) | |
tree | d77e5623e700a1633f34a001a8032a40a16d65b1 /bufferevent_ratelim.c | |
parent | 0d10804465ccdbaa2c94efc30f052a4e0391b208 (diff) | |
parent | 5b18f13048d4d6e65ee93438a052e4d904f3f639 (diff) | |
download | libevent-2cbe115cbcdd47d954fa47a96c206c5c6ee63ddc.tar.gz |
Merge remote-tracking branch 'origin/patches-2.0'
Diffstat (limited to 'bufferevent_ratelim.c')
-rw-r--r-- | bufferevent_ratelim.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/bufferevent_ratelim.c b/bufferevent_ratelim.c index 5867476c..474c9b8c 100644 --- a/bufferevent_ratelim.c +++ b/bufferevent_ratelim.c @@ -44,6 +44,7 @@ #include "bufferevent-internal.h" #include "mm-internal.h" #include "util-internal.h" +#include "event-internal.h" int ev_token_bucket_init(struct ev_token_bucket *bucket, @@ -166,7 +167,8 @@ ev_token_bucket_cfg_new(size_t read_rate, size_t read_burst, r->read_maximum = read_burst; r->write_maximum = write_burst; memcpy(&r->tick_timeout, tick_len, sizeof(struct timeval)); - r->msec_per_tick = (tick_len->tv_sec * 1000) + tick_len->tv_usec/1000; + r->msec_per_tick = (tick_len->tv_sec * 1000) + + (tick_len->tv_usec & COMMON_TIMEOUT_MICROSECONDS_MASK)/1000; return r; } @@ -519,6 +521,7 @@ _bev_group_refill_callback(evutil_socket_t fd, short what, void *arg) event_base_gettimeofday_cached(event_get_base(&g->master_refill_event), &now); LOCK_GROUP(g); + tick = ev_token_bucket_get_tick(&now, &g->rate_limit_cfg); ev_token_bucket_update(&g->rate_limit, &g->rate_limit_cfg, tick); |