]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
set destructor for freeing the link, too
authorAlan T. DeKok <aland@freeradius.org>
Thu, 9 Nov 2017 14:50:34 +0000 (09:50 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 9 Nov 2017 16:00:47 +0000 (11:00 -0500)
src/modules/rlm_radius/rlm_radius.c

index 88ddbced882ace01cbdbee4733ed6ab256f0cc1b..02d2c442ce4a8e235d43636360f5e9d0d2d6bb60 100644 (file)
@@ -523,7 +523,6 @@ static rlm_rcode_t CC_HINT(nonnull) mod_process(void *instance, void *thread, RE
        }
 
        link->request = request;
-       fr_dlist_insert_tail(&t->running, &link->entry);
 
        link->rcode = RLM_MODULE_FAIL;
 
@@ -534,6 +533,9 @@ static rlm_rcode_t CC_HINT(nonnull) mod_process(void *instance, void *thread, RE
         */
        radius_fixups(inst, request);
 
+       fr_dlist_insert_tail(&t->running, &link->entry);
+       talloc_set_destructor(link, mod_link_free);
+
        /*
         *      Push the request and it's link to the IO submodule.
         *
@@ -543,13 +545,10 @@ static rlm_rcode_t CC_HINT(nonnull) mod_process(void *instance, void *thread, RE
         */
        rcode = inst->io->push(inst->io_instance, request, link, t->thread_io_ctx);
        if (rcode != RLM_MODULE_YIELD) {
-               fr_dlist_remove(&link->entry);
                talloc_free(link);
                return rcode;
        }
 
-       talloc_set_destructor(link, mod_link_free);
-
        return unlang_module_yield(request, mod_radius_resume, mod_radius_signal, link);
 }