/** Send a signal from parent request to subrequest in another virtual server
*
*/
-static void unlang_call_signal(UNUSED REQUEST *request, void *ctx, fr_state_signal_t action)
+static void unlang_call_signal(REQUEST *request, fr_state_signal_t action)
{
- REQUEST *child = talloc_get_type_abort(ctx, REQUEST);
+ unlang_stack_t *stack = request->stack;
+ unlang_stack_frame_t *frame = &stack->frame[stack->depth];
+ REQUEST *child = frame->state;
unlang_interpret_signal(child, action);
}
rad_assert(stack->depth > 1);
frame = &stack->frame[stack->depth];
+
frame_cleanup(frame);
frame = &stack->frame[--stack->depth];
if (!frame->signal) continue;
- frame->signal(request, NULL, action);
+ frame->signal(request, action);
}
stack->depth = depth; /* Reset */
}
* or just cleanup the state of the original #unlang_op_call_t.
*
* @param[in] request The current request.
- * @param[in] rctx A structure allocated by the initial #unlang_op_call_t to store
- * the result of the async execution.
* @param[in] action We're being signalled with.
*/
-typedef void (*unlang_op_signal_t)(REQUEST *request, void *rctx, fr_state_signal_t action);
+typedef void (*unlang_op_signal_t)(REQUEST *request, fr_state_signal_t action);
/** A generic function pushed by a module or xlat to functions deeper in the C call stack to create resumption points
*
* If there is no #fr_unlang_module_signal_t callback defined, the action is ignored.
*
* @param[in] request The current request.
- * @param[in] rctx createed by #unlang_module.
* @param[in] action to signal.
*/
-static void unlang_module_signal(REQUEST *request, UNUSED void *rctx, fr_state_signal_t action)
+static void unlang_module_signal(REQUEST *request, fr_state_signal_t action)
{
unlang_stack_t *stack = request->stack;
unlang_stack_frame_t *frame = &stack->frame[stack->depth];
/** Send a signal from parent request to all of it's children
*
*/
-static void unlang_parallel_signal(REQUEST *request, UNUSED void *rctx, fr_state_signal_t action)
+static void unlang_parallel_signal(REQUEST *request, fr_state_signal_t action)
{
unlang_stack_t *stack = request->stack;
unlang_stack_frame_t *frame = &stack->frame[stack->depth];
/** Send a signal from parent request to subrequest
*
*/
-static void unlang_subrequest_signal(REQUEST *request, UNUSED void *rctx, fr_state_signal_t action)
+static void unlang_subrequest_signal(REQUEST *request, fr_state_signal_t action)
{
unlang_stack_t *stack = request->stack;
unlang_stack_frame_t *frame = &stack->frame[stack->depth];
* If there is no #xlat_func_signal_t callback defined, the action is ignored.
*
* @param[in] request The current request.
- * @param[in] rctx created by #unlang_module.
* @param[in] action What the request should do (the type of signal).
*/
-static void unlang_xlat_signal(REQUEST *request, UNUSED void *rctx, fr_state_signal_t action)
+static void unlang_xlat_signal(REQUEST *request, fr_state_signal_t action)
{
unlang_stack_t *stack = request->stack;
unlang_stack_frame_t *frame = &stack->frame[stack->depth];