]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
let's do unlang thread initialization *after* loading virtual servers.
authorAlan T. DeKok <aland@freeradius.org>
Tue, 21 Sep 2021 20:03:19 +0000 (16:03 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 21 Sep 2021 20:04:03 +0000 (16:04 -0400)
src/bin/unit_test_module.c
src/lib/unlang/compile.c
src/lib/unlang/unlang_priv.h

index ee5a4d6d01077b6baccf59f113d17391259f4532..f7ee9b04d376781797ca13fdfe7ac542c7430441 100644 (file)
@@ -728,8 +728,6 @@ int main(int argc, char *argv[])
                EXIT_WITH_FAILURE;
        }
 
-       unlang_thread_instantiate(autofree);
-
        /*
         *      Ensure that we load the correct virtual server for the
         *      protocol, if necessary.
@@ -791,6 +789,7 @@ int main(int argc, char *argv[])
         */
        if (modules_thread_instantiate(thread_ctx, el) < 0) EXIT_WITH_FAILURE;
        if (xlat_thread_instantiate(thread_ctx) < 0) EXIT_WITH_FAILURE;
+       unlang_thread_instantiate(thread_ctx);
 
        /*
         *  Set the panic action (if required)
index ea29c82bf65eba732fefce510837a480ada4d399..22dbd25120c6a58dd8905b2bf2c2b01e3d9eda1d 100644 (file)
@@ -4100,21 +4100,24 @@ void unlang_frame_perf_init(unlang_t const *instruction)
 {
        unlang_thread_t *t;
 
-       if (!instruction->number) return;
+       if (!instruction->number || !unlang_thread_array) return;
+
+       fr_assert(instruction->number <= unlang_number);
 
        t = &unlang_thread_array[instruction->number];
 
        t->use_count++;
 
        t->enter = fr_time();
-
 }
 
 void unlang_frame_perf_cleanup(unlang_t const *instruction)
 {
        unlang_thread_t *t;
 
-       if (!instruction->number) return;
+       if (!instruction || !instruction->number || !unlang_thread_array) return;
+
+       fr_assert(instruction->number <= unlang_number);
 
        t = &unlang_thread_array[instruction->number];
 
index ca08f4dad20b399c84bc1a4653f91d404e361af4..89cefe9ef8e47e295c89213222bc1531b07a4624 100644 (file)
@@ -384,7 +384,7 @@ static inline void frame_state_init(unlang_stack_t *stack, unlang_stack_frame_t
        unlang_op_t     *op;
        char const      *name;
 
-//     unlang_frame_perf_init(frame->instruction);
+       unlang_frame_perf_init(instruction);
 
        op = &unlang_ops[instruction->type];
        name = op->frame_state_name ? op->frame_state_name : __location__;
@@ -437,7 +437,7 @@ static inline void frame_cleanup(unlang_stack_frame_t *frame)
                TALLOC_FREE(frame->state);
        }
 
-//     unlang_frame_perf_cleanup(frame->instruction);
+       unlang_frame_perf_cleanup(frame->instruction);
 }
 
 /** Advance to the next sibling instruction