int cf_pair_parse_value(TALLOC_CTX *ctx, void *out, UNUSED void *base, CONF_ITEM *ci, CONF_PARSER const *rule)
{
int ret = 0;
- bool cant_be_empty, tmpl, nonblock;
+ bool cant_be_empty, tmpl;
ssize_t slen;
cant_be_empty = fr_rule_not_empty(rule);
tmpl = fr_rule_is_tmpl(rule);
- nonblock = fr_rule_non_blocking(rule);
fr_assert(cp);
fr_assert(!fr_rule_is_attribute(rule) || tmpl); /* Attribute flag only valid for templates */
return -1;
}
- /*
- * Non-blocking xlat's
- */
- if (nonblock) {
- if (vpt->type == TMPL_TYPE_EXEC) {
- cf_log_err(cp, "The '%s' configuration item MUST NOT be used with a blocking operation.", cp->attr);
- return -1;
- }
-
- if ((vpt->type == TMPL_TYPE_XLAT) &&
- xlat_async_required(tmpl_xlat(vpt))) {
- cf_log_err(cp, "The '%s' configuration item MUST NOT be used with a blocking expansion.", cp->attr);
- return -1;
- }
- }
-
*(tmpl_t **)out = vpt;
goto finish;
//!< left as the default to is_set_offset
//!< or is_set_ptr.
#define FR_TYPE_OK_MISSING (1 << 22) //!< OK if it's missing
-#define FR_TYPE_NON_BLOCKING (1 << 23) //!< require a non-blocking xlat expansion
#define FR_BASE_TYPE(_t) (0xff & (_t))
/** @} */
#define fr_rule_ok_missing(_rule) ((_rule)->type & FR_TYPE_OK_MISSING)
-#define fr_rule_non_blocking(_rule) ((_rule)->type & FR_TYPE_NON_BLOCKING)
-
#define fr_rule_file_exists(_rule) (((_rule)->type & FR_TYPE_FILE_EXISTS) == FR_TYPE_FILE_EXISTS)
#define fr_rule_dflt(_rule) ((_rule)->dflt || (_rule)->dflt_func)
static const CONF_PARSER module_config[] = {
{ FR_CONF_OFFSET("filename", FR_TYPE_FILE_OUTPUT | FR_TYPE_XLAT, rlm_detail_t, filename), .dflt = "%A/%{Packet-Src-IP-Address}/detail" },
- { FR_CONF_OFFSET("header", FR_TYPE_TMPL | FR_TYPE_XLAT | FR_TYPE_NON_BLOCKING, rlm_detail_t, header),
+ { FR_CONF_OFFSET("header", FR_TYPE_TMPL | FR_TYPE_XLAT, rlm_detail_t, header),
.dflt = "%t", .quote = T_DOUBLE_QUOTED_STRING },
{ FR_CONF_OFFSET("permissions", FR_TYPE_UINT32, rlm_detail_t, perm), .dflt = "0600" },
{ FR_CONF_OFFSET("group", FR_TYPE_STRING, rlm_detail_t, group) },