diff options
author | Alexander Traud <pabstraud@compuserve.com> | 2017-01-04 12:50:11 +0100 |
---|---|---|
committer | Alexander Traud <pabstraud@compuserve.com> | 2017-01-04 06:02:27 -0600 |
commit | 367128e70be203f1c2a7b5371cd8f72a5dc69905 (patch) | |
tree | 7be12681e4a62a296563bb8ff37973e1c1587101 /channels/chan_sip.c | |
parent | 0ab9d103f614c6339334c60bc032c1f8f941326c (diff) |
chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND.
After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats
but remember the joint format. Cached formats contain default parameters,
often create an empty fmtp line. However, a joint format might have passed
format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and
contain the resulting format parameters from a SDP negotiation.
ASTERISK-26691 #close
Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r-- | channels/chan_sip.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index d62a811a1..51c17c538 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -7371,6 +7371,12 @@ static void try_suggested_sip_codec(struct sip_pvt *p) ao2_ref(fmt, -1); } + + /* The original joint formats may have contained negotiated parameters (fmtp) + * like the Opus Codec or iLBC 20. The cached formats contain the default + * parameters, which could be different than the negotiated (joint) result. */ + ast_format_cap_replace_from_cap(p->jointcaps, original_jointcaps, AST_MEDIA_TYPE_UNKNOWN); + ao2_ref(original_jointcaps, -1); return; } |