From: Arran Cudbard-Bell Date: Sat, 4 Apr 2020 03:03:52 +0000 (-0600) Subject: trunk: Allow management whilst in a handler, but don't allow connections to be freed X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2a4c1cca4ccfd5e18ffa99f7af5c9e4e62d020e7;p=thirdparty%2Ffreeradius-server.git trunk: Allow management whilst in a handler, but don't allow connections to be freed --- diff --git a/src/lib/server/trunk.c b/src/lib/server/trunk.c index bf14a114a84..6a579cd0b17 100644 --- a/src/lib/server/trunk.c +++ b/src/lib/server/trunk.c @@ -3402,12 +3402,6 @@ static void trunk_manage(fr_trunk_t *trunk, fr_time_t now, char const *caller) uint32_t req_count; uint16_t conn_count; - /* - * This should never be called if we're inside - * a callback... - */ - rad_assert(!trunk->in_handler); - DEBUG4("%s - Managing trunk", caller); /* @@ -3429,7 +3423,9 @@ static void trunk_manage(fr_trunk_t *trunk, fr_time_t now, char const *caller) /* * Process deferred connection freeing */ - while ((tconn = fr_dlist_head(&trunk->to_free))) talloc_free(fr_dlist_remove(&trunk->to_free, tconn)); + if (!trunk->in_handler) { + while ((tconn = fr_dlist_head(&trunk->to_free))) talloc_free(fr_dlist_remove(&trunk->to_free, tconn)); + } /* * A trunk can be signalled to not proactively