#ifndef NDEBUG
if (DEBUG_ENABLED5) RDEBUG3("unlang_interpret_push called with instruction type \"%s\" - args %s %s",
- instruction ? instruction->debug_name : "<none>",
+ instruction->debug_name,
do_next_sibling ? "UNLANG_NEXT_SIBLING" : "UNLANG_NEXT_STOP",
conf->top_frame ? "UNLANG_TOP_FRAME" : "UNLANG_SUB_FRAME");
#endif
*/
vp = fr_pair_list_tail(&ref->request->local_pairs);
while (vp) {
+ fr_assert(vp->da->flags.local);
+
prev = fr_pair_list_prev(&ref->request->local_pairs, vp);
if (vp->da->dict != ref->request->local_dict) {
break;
unlang_frame_perf_cleanup(frame);
frame_state_init(stack, frame); /* Don't change p_result */
return UNLANG_FRAME_ACTION_RETRY;
+ }
+
default:
break;
}
- }
finalize:
/*
* state, assume the caller knows what it's
* doing and allocate one.
*/
- return (TALLOC_CTX *)(frame->state = talloc_new(request));
+ return (TALLOC_CTX *)(frame->state = talloc_new(stack));
}
static xlat_arg_parser_t const unlang_cancel_xlat_args[] = {
fr_value_box_t *vb;
fr_time_t when = fr_time_from_sec(0); /* Invalid clang complaints if we don't set this */
+ fr_assert(unlang_interpret_event_list(request) != NULL);
+
XLAT_ARGS(args, &timeout);
/*
*/
ev_p = ev_p_og = request_data_get(request, (void *)unlang_cancel_xlat, 0);
if (ev_p) {
- if (*ev_p) when = fr_timer_when(*ev_p); /* *ev_p should never be NULL, really... */
+ MEM(*ev_p);
+
+ when = fr_timer_when(*ev_p);
} else {
/*
* Must not be parented from the request