diff options
author | Jonathan Rose <jrose@digium.com> | 2014-10-02 15:33:50 +0000 |
---|---|---|
committer | Jonathan Rose <jrose@digium.com> | 2014-10-02 15:33:50 +0000 |
commit | 2f570094b7a59655aadbcd911e32b3857d28ad44 (patch) | |
tree | 7aee605449c23b51f60a5b5c1873a56ca68b5999 /channels/chan_pjsip.c | |
parent | aa5458d6abe76599ff9b5be4982567cbe63d21fa (diff) |
chan_pjsip: Fix an assertion for channels that lack formats on creation
ASTERISK-24222 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4017/
........
Merged revisions 424333 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424358 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_pjsip.c')
-rw-r--r-- | channels/chan_pjsip.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index b8fb35c35..015cd6448 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -371,7 +371,6 @@ static struct ast_channel *chan_pjsip_new(struct ast_sip_session *session, int s { struct ast_channel *chan; struct ast_format_cap *caps; - struct ast_format *fmt; RAII_VAR(struct chan_pjsip_pvt *, pvt, NULL, ao2_cleanup); struct ast_sip_channel_pvt *channel; struct ast_variable *var; @@ -418,16 +417,20 @@ static struct ast_channel *chan_pjsip_new(struct ast_sip_session *session, int s ast_channel_nativeformats_set(chan, caps); - /* - * XXX Probably should pick the first audio codec instead - * of simply the first codec. The first codec may be video. - */ - fmt = ast_format_cap_get_format(caps, 0); - ast_channel_set_writeformat(chan, fmt); - ast_channel_set_rawwriteformat(chan, fmt); - ast_channel_set_readformat(chan, fmt); - ast_channel_set_rawreadformat(chan, fmt); - ao2_ref(fmt, -1); + if (!ast_format_cap_empty(caps)) { + /* + * XXX Probably should pick the first audio codec instead + * of simply the first codec. The first codec may be video. + */ + struct ast_format *fmt = ast_format_cap_get_format(caps, 0); + + ast_channel_set_writeformat(chan, fmt); + ast_channel_set_rawwriteformat(chan, fmt); + ast_channel_set_readformat(chan, fmt); + ast_channel_set_rawreadformat(chan, fmt); + ao2_ref(fmt, -1); + } + ao2_ref(caps, -1); if (state == AST_STATE_RING) { |