MEDIUM: pattern/map: Maps can returns various types
A map can store and return various types as output. The only one example is the
IPv4 and IPv6 types. The previous patch remove the type from the sample storage
struct and use the conoverter output type, expecting that all entries of the
map have the same type.
This will be wrong when the maps will support both IPv4 and IPv6 as output.
diff --git a/src/dumpstats.c b/src/dumpstats.c
index d1c4885..0621f1f 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -5619,11 +5619,6 @@
appctx->ctx.map.expr = LIST_ELEM(&appctx->ctx.map.ref->pat, struct pattern_expr *, list);
appctx->ctx.map.expr = pat_expr_get_next(appctx->ctx.map.expr, &appctx->ctx.map.ref->pat);
appctx->st2 = STAT_ST_LIST;
-
- /* retrieve one of the compatible map descriptor for learnig the type. */
- if (appctx->ctx.map.display_flags == PAT_REF_MAP)
- appctx->ctx.map.desc = container_of(appctx->ctx.map.expr->pat_head,
- struct map_descriptor, pat);
/* fall through */
case STAT_ST_LIST:
@@ -5698,7 +5693,7 @@
if (appctx->ctx.map.display_flags == PAT_REF_MAP) {
if (pat->data && pat->ref && pat->ref->sample)
chunk_appendf(&trash, ", value=\"%s\", type=\"%s\"", pat->ref->sample,
- smp_to_type[appctx->ctx.map.desc->conv->out_type]);
+ smp_to_type[pat->data->type]);
else
chunk_appendf(&trash, ", value=none");
}