diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/stats.c | 34 | 
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)  | 
