From: Aki Tuomi Date: Fri, 20 Dec 2019 10:31:17 +0000 (+0200) Subject: stats: Output multi level sub-metrics correctly X-Git-Tag: 2.3.10~173 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ad2c50d54de23975f3cf99f13c15090e16acf4a3;p=thirdparty%2Fdovecot%2Fcore.git stats: Output multi level sub-metrics correctly --- diff --git a/src/stats/client-reader.c b/src/stats/client-reader.c index bd220ea03e..30ef71d2cc 100644 --- a/src/stats/client-reader.c +++ b/src/stats/client-reader.c @@ -82,20 +82,22 @@ static void reader_client_dump_sub_metrics(struct ostream *output, const struct metric *metric, const char *sub_name, const char *const *fields) { - size_t pos; + size_t root_pos, name_pos; struct metric *const *sub_metrics; if (!array_is_created(&metric->sub_metrics)) return; string_t *str = t_str_new(128); str_append_tabescaped(str, sub_name); str_append_c(str, '_'); - pos = str->used; + root_pos = str->used; array_foreach(&metric->sub_metrics, sub_metrics) { + str_truncate(str, root_pos); str_append_tabescaped(str, (*sub_metrics)->sub_name); + name_pos = str->used; reader_client_dump_metric(str, *sub_metrics, fields); o_stream_nsend(output, str_data(str), str_len(str)); - str_truncate(str, pos); + str_truncate(str, name_pos); reader_client_dump_sub_metrics(output, *sub_metrics, str_c(str), fields); }