summaryrefslogtreecommitdiff
path: root/channels/chan_pjsip.c
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2014-10-01 22:52:09 +0000
committerJonathan Rose <jrose@digium.com>2014-10-01 22:52:09 +0000
commit2dfc3b65f8ccbacc9bab0691233a8275c4026c6b (patch)
treecce895e5d77b46e115f9f33a00e95b0b7173f076 /channels/chan_pjsip.c
parenta2c47caa09aaf8861ad49dd8a0fa2be6a00d1db0 (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/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@424333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_pjsip.c')
-rw-r--r--channels/chan_pjsip.c25
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) {