synchronous xlats now call unlang_interpret_synchronous(), and
thus can deal with async xlats
#ifndef HAVE_REGEX
case TMPL_TYPE_REGEX_XLAT:
#endif
- case TMPL_TYPE_XLAT:
- return xlat_async_required(tmpl_xlat(vpt));
-
+ case TMPL_TYPE_XLAT: /* synchronous xlats use unlang_interpret_synchronous() */
default:
return false;
}
int xlat_flatten_compiled_argv(TALLOC_CTX *ctx, xlat_exp_head_t ***argv, xlat_exp_head_t *head);
-bool xlat_async_required(xlat_exp_head_t const *xlat);
-
-
fr_slen_t xlat_tokenize_expression(TALLOC_CTX *ctx, xlat_exp_head_t **head, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules);
done_init = false;
}
-
-/** Return whether or not async is required for this xlat.
- *
- * If the xlat is needs_async, then it MAY yield
- * If the xlat is not needs_async, then it will NOT yield
- *
- * If the xlat yields, then async is required.
- */
-bool xlat_async_required(xlat_exp_head_t const *head)
-{
- if (!head) return false;
-
- return head->flags.needs_async;
-}