]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
event: Don't allow the same event to be inserted multiple times
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 15 May 2020 17:41:34 +0000 (12:41 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 15 May 2020 17:41:52 +0000 (12:41 -0500)
src/lib/util/event.c

index 1ee319da7d7fbe993add524cab20249459d97d58..e2d95a2324865852cc3dc1b531ddfeabeb2ebe30 100644 (file)
@@ -1282,7 +1282,12 @@ int _fr_event_timer_at(NDEBUG_LOCATION_ARGS
 #endif
 
        if (el->in_handler) {
-               fr_dlist_insert_head(&el->ev_to_add, ev);
+               /*
+                *      Don't allow an event to be inserted
+                *      into the deferred insertion list
+                *      multiple times.
+                */
+               if (!fr_dlist_entry_in_list(&ev->entry)) fr_dlist_insert_head(&el->ev_to_add, ev);
        } else if (unlikely(fr_heap_insert(el->times, ev) < 0)) {
                fr_strerror_printf_push("Failed inserting event");
                talloc_free(ev);