Small optimization change when tickets < period

This commit is contained in:
Nils O. Selåsdal
2013-10-15 20:14:15 +02:00
parent 28514c0a57
commit 9c15b73774
+11 -3
View File
@@ -4,7 +4,13 @@
void uc_ratelimit_init(struct RateLimit *r, long tickets, long period, long current_ts)
{
r->tickets = tickets;
r->ticket_cost = tickets * period;
if (tickets > period) {
r->ticket_cost = tickets * period;
} else {
r->ticket_cost = period;
}
r->period = period;
r->funds = r->ticket_cost * tickets;
r->last_ts = current_ts;
@@ -19,8 +25,9 @@ void uc_ratelimit_reset(struct RateLimit *r, long current_ts)
{
r->funds = r->ticket_cost * r->tickets;
if (current_ts)
if (current_ts) {
r->last_ts = current_ts;
}
}
int uc_ratelimit_allow(struct RateLimit *r, long current_ts)
@@ -45,8 +52,9 @@ int uc_ratelimit_allow(struct RateLimit *r, long current_ts)
((r->tickets * r->ticket_cost) / r->period);
//throttle handing out tickets
if (r->funds > r->ticket_cost * r->tickets)
if (r->funds > r->ticket_cost * r->tickets) {
r->funds = r->ticket_cost * r->tickets;
}
//If we have enough to buy atleast one ticket, we can allow
if (r->funds >= r->ticket_cost) {