mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Tweaks on 19435 fix:
* Raise limit: 16k isn't all that high. * Don't log when limit exceded; log later on. * Say "over" when we log more than we say we log. * Add target version to changes file
This commit is contained in:
parent
77459b97aa
commit
fb7f90c181
@ -2,5 +2,5 @@
|
|||||||
- Fix an integer overflow in the rate-limiter that caused displaying of
|
- Fix an integer overflow in the rate-limiter that caused displaying of
|
||||||
wrong number of suppressed messages (if there are too many of them).
|
wrong number of suppressed messages (if there are too many of them).
|
||||||
If the number of messages hits the limit of messages per interval the
|
If the number of messages hits the limit of messages per interval the
|
||||||
rate-limiter drops a warning and doesn't count any further.
|
rate-limiter doesn't count any further.
|
||||||
Fixes bug 19435.
|
Fixes bug 19435; bugfix on 0.2.4.11-alpha.
|
||||||
|
@ -1995,12 +1995,7 @@ rate_limit_is_ready(ratelim_t *lim, time_t now)
|
|||||||
lim->n_calls_since_last_time = 0;
|
lim->n_calls_since_last_time = 0;
|
||||||
return res;
|
return res;
|
||||||
} else {
|
} else {
|
||||||
if (lim->n_calls_since_last_time < RATELIM_TOOMANY) {
|
if (lim->n_calls_since_last_time <= RATELIM_TOOMANY) {
|
||||||
++lim->n_calls_since_last_time;
|
|
||||||
} else if (lim->n_calls_since_last_time == RATELIM_TOOMANY) {
|
|
||||||
log_warn(LD_GENERAL,
|
|
||||||
"Enormously large number of messages (%d). It's probably a bug.",
|
|
||||||
RATELIM_TOOMANY);
|
|
||||||
++lim->n_calls_since_last_time;
|
++lim->n_calls_since_last_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2020,11 +2015,12 @@ rate_limit_log(ratelim_t *lim, time_t now)
|
|||||||
return tor_strdup("");
|
return tor_strdup("");
|
||||||
} else {
|
} else {
|
||||||
char *cp=NULL;
|
char *cp=NULL;
|
||||||
|
const char *opt_over = (n >= RATELIM_TOOMANY) ? "over " : "";
|
||||||
/* XXXX this is not exactly correct: the messages could have occurred
|
/* XXXX this is not exactly correct: the messages could have occurred
|
||||||
* any time between the old value of lim->allowed and now. */
|
* any time between the old value of lim->allowed and now. */
|
||||||
tor_asprintf(&cp,
|
tor_asprintf(&cp,
|
||||||
" [%d similar message(s) suppressed in last %d seconds]",
|
" [%s%d similar message(s) suppressed in last %d seconds]",
|
||||||
n-1, lim->rate);
|
opt_over, n-1, lim->rate);
|
||||||
return cp;
|
return cp;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -292,7 +292,7 @@ typedef struct ratelim_t {
|
|||||||
} ratelim_t;
|
} ratelim_t;
|
||||||
|
|
||||||
#define RATELIM_INIT(r) { (r), 0, 0 }
|
#define RATELIM_INIT(r) { (r), 0, 0 }
|
||||||
#define RATELIM_TOOMANY (16*1000)
|
#define RATELIM_TOOMANY (16*1000*1000)
|
||||||
|
|
||||||
char *rate_limit_log(ratelim_t *lim, time_t now);
|
char *rate_limit_log(ratelim_t *lim, time_t now);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user