aboutsummaryrefslogtreecommitdiffstats
path: root/src/stats.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stats.c')
-rw-r--r--src/stats.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/src/stats.c b/src/stats.c
index a0723702..fa56f50a 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -278,7 +278,8 @@ int osmo_stats_set_interval(int interval)
int osmo_stats_reporter_set_name_prefix(struct osmo_stats_reporter *srep, const char *prefix)
{
talloc_free(srep->name_prefix);
- srep->name_prefix = prefix ? talloc_strdup(srep, prefix) : NULL;
+ srep->name_prefix = prefix && strlen(prefix) > 0 ?
+ talloc_strdup(srep, prefix) : NULL;
return update_srep_config(srep);
}
@@ -468,18 +469,29 @@ static int osmo_stats_reporter_statsd_send(struct osmo_stats_reporter *srep,
int buf_size;
int nchars, rc = 0;
char *fmt = NULL;
+ char *prefix = srep->name_prefix;
int old_len = msgb_length(srep->buffer);
- if (name1) {
- if (index1 != 0)
- fmt = "%1$s.%2$s.%6$u.%3$s:%4$d|%5$s";
- else
- fmt = "%1$s.%2$s.%3$s:%4$d|%5$s";
+ if (prefix) {
+ if (name1) {
+ if (index1 != 0)
+ fmt = "%1$s.%2$s.%6$u.%3$s:%4$d|%5$s";
+ else
+ fmt = "%1$s.%2$s.%3$s:%4$d|%5$s";
+ } else {
+ fmt = "%1$s.%2$0.0s%3$s:%4$d|%5$s";
+ }
} else {
- fmt = "%1$s.%2$0.0s%3$s:%4$d|%5$s";
+ prefix = "";
+ if (name1) {
+ if (index1 != 0)
+ fmt = "%1$s%2$s.%6$u.%3$s:%4$d|%5$s";
+ else
+ fmt = "%1$s%2$s.%3$s:%4$d|%5$s";
+ } else {
+ fmt = "%1$s%2$0.0s%3$s:%4$d|%5$s";
+ }
}
- if (!srep->name_prefix)
- fmt += 5; /* skip prefix part */
if (srep->agg_enabled) {
if (msgb_length(srep->buffer) > 0 &&
@@ -493,7 +505,7 @@ static int osmo_stats_reporter_statsd_send(struct osmo_stats_reporter *srep,
buf_size = msgb_tailroom(srep->buffer);
nchars = snprintf(buf, buf_size, fmt,
- srep->name_prefix, name1, name2,
+ prefix, name1, name2,
value, unit, index1);
if (nchars >= buf_size) {
@@ -508,7 +520,7 @@ static int osmo_stats_reporter_statsd_send(struct osmo_stats_reporter *srep,
buf_size = msgb_tailroom(srep->buffer);
nchars = snprintf(buf, buf_size, fmt,
- srep->name_prefix, name1, name2,
+ prefix, name1, name2,
value, unit, index1);
if (nchars >= buf_size)