mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Fix some issues in rate-limiting noticed by Sebastian
This commit is contained in:
parent
ba9c1275c4
commit
285addbd94
@ -1584,10 +1584,10 @@ ftime_definitely_before(time_t now, time_t when)
|
||||
/** If the rate-limiter <b>lim</b> is ready at <b>now</b>, return the number
|
||||
* of calls to rate_limit_is_ready (including this one!) since the last time
|
||||
* rate_limit_is_ready returned nonzero. Otherwise return 0. */
|
||||
int
|
||||
static int
|
||||
rate_limit_is_ready(ratelim_t *lim, time_t now)
|
||||
{
|
||||
if (lim->rate + lim->last_allowed >= now) {
|
||||
if (lim->rate + lim->last_allowed <= now) {
|
||||
int res = lim->n_calls_since_last_time + 1;
|
||||
lim->last_allowed = now;
|
||||
lim->n_calls_since_last_time = 0;
|
||||
|
@ -277,7 +277,6 @@ typedef struct ratelim_t {
|
||||
|
||||
#define RATELIM_INIT(r) { (r), 0, 0 }
|
||||
|
||||
int rate_limit_is_ready(ratelim_t *lim, time_t now);
|
||||
char *rate_limit_log(ratelim_t *lim, time_t now);
|
||||
|
||||
/* File helpers */
|
||||
|
@ -288,7 +288,9 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn)
|
||||
|
||||
/* hand it off to the cpuworkers, and then return. */
|
||||
if (assign_onionskin_to_cpuworker(NULL, circ, onionskin) < 0) {
|
||||
static ratelim_t handoff_warning = RATELIM_INIT(3600);
|
||||
#define WARN_HANDOFF_FAILURE_INTERVAL (6*60*60)
|
||||
static ratelim_t handoff_warning =
|
||||
RATELIM_INIT(WARN_HANDOFF_FAILURE_INTERVAL);
|
||||
char *m;
|
||||
if ((m = rate_limit_log(&handoff_warning, approx_time()))) {
|
||||
log_warn(LD_GENERAL,"Failed to hand off onionskin. Closing.%s",m);
|
||||
|
Loading…
Reference in New Issue
Block a user