From: Nick Porter Date: Thu, 27 Mar 2025 16:59:01 +0000 (+0000) Subject: If redis returns an array keep the values separate X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe68e6ba2be7dc22f9142600bbcf16baba37c947;p=thirdparty%2Ffreeradius-server.git If redis returns an array keep the values separate If the xlat just returns a FR_TYPE_GROUP, then the values get smushed together before being assigned to the LHS of an assignment. --- diff --git a/src/modules/rlm_redis/rlm_redis.c b/src/modules/rlm_redis/rlm_redis.c index a393f98a94b..726cf59fa00 100644 --- a/src/modules/rlm_redis/rlm_redis.c +++ b/src/modules/rlm_redis/rlm_redis.c @@ -552,7 +552,14 @@ static xlat_action_t redis_lua_func_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, action = XLAT_ACTION_FAIL; goto finish; } - fr_dcursor_append(out, vb_out); + + if (vb_out->type == FR_TYPE_GROUP) { + fr_value_box_t *child_vb = NULL; + while ((child_vb = fr_value_box_list_pop_head(&vb_out->vb_group))) fr_dcursor_append(out, child_vb); + talloc_free(vb_out); + } else { + fr_dcursor_append(out, vb_out); + } finish: fr_redis_reply_free(&reply); @@ -767,7 +774,14 @@ reply_parse: action = XLAT_ACTION_FAIL; goto finish; } - fr_dcursor_append(out, vb_out); + + if (vb_out->type == FR_TYPE_GROUP) { + fr_value_box_t *child_vb = NULL; + while ((child_vb = fr_value_box_list_pop_head(&vb_out->vb_group))) fr_dcursor_append(out, child_vb); + talloc_free(vb_out); + } else { + fr_dcursor_append(out, vb_out); + } finish: fr_redis_reply_free(&reply);