chan_pjsip: Don't change formats when frame of unsupported format is received.

Receipt of an RTP packet currently causes the formats on an PJSIP channel to
change to the format of the RTP packet. In some off-nominal cases it's possible
for this to be a format that has not been configured or negotiated. This change
makes it so only formats explicitly configured on the endpoint are allowed.

ASTERISK-25258 #close

Change-Id: If93d641fb6418a285928839300d7854cab8c1020
changes/03/903/3
Joshua Colp 10 years ago
parent 5086bdacfb
commit 2c626ceb64

@ -629,6 +629,15 @@ static struct ast_frame *chan_pjsip_read(struct ast_channel *ast)
return f; return f;
} }
if (ast_format_cap_iscompatible_format(channel->session->endpoint->media.codecs, f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) {
ast_debug(1, "Oooh, got a frame with format of %s on channel '%s' when endpoint '%s' is not configured for it\n",
ast_format_get_name(f->subclass.format), ast_channel_name(ast),
ast_sorcery_object_get_id(channel->session->endpoint));
ast_frfree(f);
return &ast_null_frame;
}
if (channel->session->dsp) { if (channel->session->dsp) {
f = ast_dsp_process(ast, channel->session->dsp, f); f = ast_dsp_process(ast, channel->session->dsp, f);

Loading…
Cancel
Save