summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2017-03-10 14:45:07 -0600
committerGerrit Code Review <gerrit2@gerrit.digium.api>2017-03-10 14:45:07 -0600
commit8386a38e06d661c13b5dd581ab829ff5a8762f54 (patch)
tree0fb45d3a88ad6ef43186ed0e66ae7bf21dddd0c0
parentbc6eeab82250fe3ae2fce6db3831b64f976c28cc (diff)
parent67c989ce78935b3d83e40af664d5e78ed93a7eec (diff)
Merge "pjsip/cli_commands: pjsip show channelstats shows wrong codec" into 13
-rw-r--r--channels/pjsip/cli_commands.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/channels/pjsip/cli_commands.c b/channels/pjsip/cli_commands.c
index 8d99379ff..1d2fbb9ad 100644
--- a/channels/pjsip/cli_commands.c
+++ b/channels/pjsip/cli_commands.c
@@ -346,11 +346,10 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags)
struct ast_sip_channel_pvt *cpvt = channel ? ast_channel_tech_pvt(channel) : NULL;
struct chan_pjsip_pvt *pvt = cpvt ? cpvt->pvt : NULL;
struct ast_sip_session_media *media = pvt ? pvt->media[SIP_MEDIA_AUDIO] : NULL;
- struct ast_rtp_codecs *codecs = media && media->rtp ? ast_rtp_instance_get_codecs(media->rtp) : NULL;
- struct ast_format *format = codecs ? ast_rtp_codecs_get_payload_format(codecs, 0) : NULL;
struct ast_rtp_instance_stats stats;
char *print_name = NULL;
char *print_time = alloca(32);
+ char codec_in_use[7];
ast_assert(context->output_buffer != NULL);
@@ -360,6 +359,16 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags)
return -1;
}
+ codec_in_use[0] = '\0';
+
+ if (channel) {
+ ast_channel_lock(channel);
+ if (ast_channel_rawreadformat(channel)) {
+ ast_copy_string(codec_in_use, ast_format_get_name(ast_channel_rawreadformat(channel)), sizeof(codec_in_use));
+ }
+ ast_channel_unlock(channel);
+ }
+
print_name = ast_strdupa(snapshot->name);
/* Skip the PJSIP/. We know what channel type it is and we need the space. */
print_name += 6;
@@ -374,7 +383,7 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags)
snapshot->bridgeid,
print_name,
print_time,
- format ? ast_format_get_name(format) : "",
+ codec_in_use,
stats.rxcount > 100000 ? stats.rxcount / 1000 : stats.rxcount,
stats.rxcount > 100000 ? "K": " ",
stats.rxploss > 100000 ? stats.rxploss / 1000 : stats.rxploss,
@@ -391,7 +400,6 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags)
);
}
- ao2_cleanup(format);
ao2_cleanup(channel);
return 0;