mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 15:05:23 +00:00
Fix small problems in the isc_ratelimiter
This commit is contained in:
@@ -57,10 +57,13 @@ ratelimiter_tick(void *arg);
|
|||||||
isc_result_t
|
isc_result_t
|
||||||
isc_ratelimiter_create(isc_loop_t *loop, isc_ratelimiter_t **ratelimiterp) {
|
isc_ratelimiter_create(isc_loop_t *loop, isc_ratelimiter_t **ratelimiterp) {
|
||||||
isc_ratelimiter_t *rl = NULL;
|
isc_ratelimiter_t *rl = NULL;
|
||||||
isc_mem_t *mctx = isc_loop_getmctx(loop);
|
isc_mem_t *mctx;
|
||||||
|
|
||||||
|
INSIST(loop != NULL);
|
||||||
INSIST(ratelimiterp != NULL && *ratelimiterp == NULL);
|
INSIST(ratelimiterp != NULL && *ratelimiterp == NULL);
|
||||||
|
|
||||||
|
mctx = isc_loop_getmctx(loop);
|
||||||
|
|
||||||
rl = isc_mem_get(mctx, sizeof(*rl));
|
rl = isc_mem_get(mctx, sizeof(*rl));
|
||||||
*rl = (isc_ratelimiter_t){
|
*rl = (isc_ratelimiter_t){
|
||||||
.pertic = 1,
|
.pertic = 1,
|
||||||
@@ -237,6 +240,7 @@ isc_ratelimiter_shutdown(isc_ratelimiter_t *rl) {
|
|||||||
REQUIRE(VALID_RATELIMITER(rl));
|
REQUIRE(VALID_RATELIMITER(rl));
|
||||||
|
|
||||||
LOCK(&rl->lock);
|
LOCK(&rl->lock);
|
||||||
|
if (rl->state != isc_ratelimiter_shuttingdown) {
|
||||||
rl->state = isc_ratelimiter_shuttingdown;
|
rl->state = isc_ratelimiter_shuttingdown;
|
||||||
|
|
||||||
while ((event = ISC_LIST_HEAD(rl->pending)) != NULL) {
|
while ((event = ISC_LIST_HEAD(rl->pending)) != NULL) {
|
||||||
@@ -245,6 +249,7 @@ isc_ratelimiter_shutdown(isc_ratelimiter_t *rl) {
|
|||||||
isc_task_send(event->ev_sender, &event);
|
isc_task_send(event->ev_sender, &event);
|
||||||
}
|
}
|
||||||
isc_loop_detach(&rl->loop);
|
isc_loop_detach(&rl->loop);
|
||||||
|
}
|
||||||
UNLOCK(&rl->lock);
|
UNLOCK(&rl->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user