Browse Source

TT#121752 restore SSRC output per call in NG stats output

This restores backwards compatibility with existing code parsing the
output, e.g. Kamailio to report MOS stats.

Change-Id: Ibafb2a7a3cf118166ffe1cca9a62a06b63252944
pull/1346/head
Richard Fuchs 4 years ago
parent
commit
c06c51ded4
1 changed files with 8 additions and 5 deletions
  1. +8
    -5
      daemon/call_interfaces.c

+ 8
- 5
daemon/call_interfaces.c View File

@ -1689,7 +1689,7 @@ stats:
}
static void ng_stats_monologue(bencode_item_t *dict, const struct call_monologue *ml,
struct call_stats *totals)
struct call_stats *totals, bencode_item_t *ssrc)
{
bencode_item_t *sub, *medias = NULL;
GList *l;
@ -1723,7 +1723,7 @@ static void ng_stats_monologue(bencode_item_t *dict, const struct call_monologue
bencode_dictionary_add_str(sub1, "tag", &cs->monologue->tag);
bencode_dictionary_add_string(sub1, "type", cs->offer_answer ? "offer/answer" : "pub/sub");
}
ng_stats_ssrc(bencode_dictionary_add_dictionary(sub, "SSRC"), ml->ssrc_hash);
ng_stats_ssrc(ssrc, ml->ssrc_hash);
medias = bencode_dictionary_add_list(sub, "medias");
@ -1766,6 +1766,8 @@ static void ng_stats_ssrc(bencode_item_t *dict, struct ssrc_hash *ht) {
struct ssrc_entry_call *se = l->data;
char *tmp = bencode_buffer_alloc(dict->buffer, 12);
snprintf(tmp, 12, "%" PRIu32, se->h.ssrc);
if (bencode_dictionary_get(dict, tmp))
continue;
bencode_item_t *ent = bencode_dictionary_add_dictionary(dict, tmp);
if (!se->stats_blocks.length || !se->lowest_mos || !se->highest_mos)
@ -1826,6 +1828,7 @@ void ng_call_stats(struct call *call, const str *fromtag, const str *totag, benc
bencode_dictionary_add_integer(output, "created", call->created.tv_sec);
bencode_dictionary_add_integer(output, "created_us", call->created.tv_usec);
bencode_dictionary_add_integer(output, "last signal", call->last_signal);
bencode_item_t *ssrc = bencode_dictionary_add_dictionary(output, "SSRC");
tags = bencode_dictionary_add_dictionary(output, "tags");
@ -1835,16 +1838,16 @@ stats:
if (!match_tag || !match_tag->len) {
for (l = call->monologues.head; l; l = l->next) {
ml = l->data;
ng_stats_monologue(tags, ml, totals);
ng_stats_monologue(tags, ml, totals, ssrc);
}
}
else {
ml = call_get_monologue(call, match_tag);
if (ml) {
ng_stats_monologue(tags, ml, totals);
ng_stats_monologue(tags, ml, totals, ssrc);
for (GList *l = ml->subscriptions.head; l; l = l->next) {
struct call_subscription *cs = l->data;
ng_stats_monologue(tags, cs->monologue, totals);
ng_stats_monologue(tags, cs->monologue, totals, ssrc);
}
}
}


Loading…
Cancel
Save