From: Alan T. DeKok Date: Fri, 14 Feb 2020 21:05:45 +0000 (-0500) Subject: remove from ev_to_add on free, if necessary X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c09aaeddb2567d41f683abc801e4d161d64101b1;p=thirdparty%2Ffreeradius-server.git remove from ev_to_add on free, if necessary --- diff --git a/src/lib/util/event.c b/src/lib/util/event.c index 7103e805855..5580aa1c5a6 100644 --- a/src/lib/util/event.c +++ b/src/lib/util/event.c @@ -993,7 +993,23 @@ static int _event_timer_free(fr_event_timer_t *ev) fr_event_timer_t const **ev_p; int ret; - ret = fr_heap_extract(el->times, ev); + if (el->in_handler) { + fr_event_timer_t **tmp_p; + + ret = -1; + + for (tmp_p = &el->ev_to_add; + *tmp_p != NULL; + tmp_p = &((*tmp_p)->next)) { + if (*tmp_p == ev) { + *tmp_p = ev->next; + ret = 0; + break; + } + } + } else { + ret = fr_heap_extract(el->times, ev); + } ev_p = ev->parent; rad_assert(*(ev->parent) == ev);