]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add destructor for parallel state
authorAlan T. DeKok <aland@freeradius.org>
Tue, 29 Aug 2017 14:48:51 +0000 (10:48 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 29 Aug 2017 14:48:51 +0000 (10:48 -0400)
src/main/unlang_interpret.c

index 6cb7d72ac1ac884019fbb698c17a0302f8a1526a..7eae996edd0b22e2ad0342a9ee68438ee7efd6e4 100644 (file)
@@ -983,6 +983,19 @@ static rlm_rcode_t unlang_parallel_resume(REQUEST *request, unlang_stack_t *stac
        return RLM_MODULE_YIELD;
 }
 
+static int parallel_state_free(unlang_parallel_t *state)
+{
+       int i;
+
+       for (i = 0; i < state->num_children; i++) {
+               if (state->children[i].child) {
+                       talloc_free(state->children[i].child);
+               }
+       }
+
+       return 0;
+}
+
 static unlang_action_t unlang_parallel(REQUEST *request, unlang_stack_t *stack,
                                       rlm_rcode_t *presult, int *priority)
 {
@@ -1013,6 +1026,7 @@ static unlang_action_t unlang_parallel(REQUEST *request, unlang_stack_t *stack,
        };
 
        (void) talloc_set_type(state, unlang_parallel_t);
+       talloc_set_destructor(state, parallel_state_free);
        state->result = RLM_MODULE_FAIL;
        state->priority = -1;                           /* as-yet unset */
        state->g = g;