[Home]

Summary:ASTERISK-28036: Codec negotiation when incoming re-INVITE has no SDP
Reporter:Daniel Harper (danieleharper)Labels:
Date Opened:2018-09-03 23:01:41Date Closed:2018-09-04 14:18:07
Priority:MinorRegression?
Status:Closed/CompleteComponents:Channels/chan_pjsip Resources/res_pjsip_sdp_rtp
Versions:13.22.0 15.5.0 Frequency of
Occurrence
Related
Issues:
Environment:Centos 6.10, 64bitAttachments:
Description:I appreciate that there might be a view that this is a feature request but I also believe that it could be also be viewed that this is a bug but I welcome the discussion.

When recieving an re-Invite without SDP asterisk is not re-offering all supported media formats & codecs only the previously determined one.

I found this link that references the various RFC's where this behaviour is expected.

Where this is an issue is in a call-pick up scenario where asterisk is dialing a call-pick feature code to pick up a external call. The issue being that the call being picked might not support the originally determined codec.

Comments:By: Asterisk Team (asteriskteam) 2018-09-03 23:01:43.625-0500

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

By: Daniel Harper (danieleharper) 2018-09-03 23:02:33.259-0500

Link here https://lists.cs.columbia.edu/pipermail/sip-implementors/2016-January/030448.html

The following are a few RFC snippets.  As shown within RFC 3725 section
10.2, 3PCC is one of the users of re-INVITE without SDP.  If a device does
not support re-INVITE without SDP or doesn't offer all codecs that the UA
is currently willing and able to use, it hinders interoperability during
3PCC situations.  For instance within RFC 3725 figure 13, the Media Server
may not be unable to communicate with the Pre-Paid User if the prepaid
device limits the offered codecs to be whatever was recently negotiated
with the Called Party.

RFC 3261 section 14.2:

"A UAS providing an offer in a 2xx (because the INVITE did not contain an
offer) SHOULD construct the offer as if the UAS were making a brand new
call, subject to the constraints of sending an offer that updates an
existing session, as described in [13] in the case of SDP.  Specifically,
this means that it SHOULD include as many media formats and media types
that the UA is willing to support."

RFC 6337 section 5.1:

"A UA should send an offer that indicates what it, and its user, are
interested in using/doing at that time, without regard for what the other
party in the call may have indicated previously.  This is the case even
when the offer is sent in response to an INVITE or re-INVITE that contains
no offer.  (However, in the case of re-INVITE, the constraints of
[RFC3261] and [RFC3264] must be observed.)"

RFC 6337 section 5.2.5:

"When the new offer is sent in response to an offerless (re-)INVITE, it
should be constructed according to the General Principle for Constructing
Offers and Answers (Section 5.1 ): all codecs the UA is currently willing
and able to use should be included, not just the ones that were negotiated
by previous offer/answer exchanges.  The same is true for media types --
so if UA A initially offered audio and video to UA B, and they end up with
only audio, and UA B sends an offerless (re-)INVITE to UA A, A's resulting
offer should most likely re-attempt video, by reusing the zeroed "m=" line
used previously."

RFC 6337 section 5.3:

"If a UA has occasion to send another offer in the session, without any
desire to change the hold status (e.g., in response to a re-INVITE without
an offer, or when sending a re-INVITE to refresh the session timer), it
should follow the "General Principle for Constructing Offers and Answers"
(Section 5.1).  If it previously initiated a "hold" by sending
"a=sendonly" attribute or "a=inactive" attribute, then it should offer
that again.  If it had not previously initiated "hold", then it should
offer "a=sendrecv" attribute, even if it had previously been forced to
answer something else.  Without this behavior it is possible to get "stuck
on hold" in some cases, especially when a 3pcc is involved."


By: Joshua C. Colp (jcolp) 2018-09-04 06:00:57.783-0500

Personally I consider this use case new functionality which would need to be behind a configuration option.

By: Benjamin Keith Ford (bford) 2018-09-04 14:16:55.194-0500

[~danieleharper], I'm going to close this out as a feature request, but I would highly recommend bringing this up on the dev list (either email [1] or IRC [2]) and getting some feedback there on ways to move forward with this if it's something you would like to see done. If it's something you would like to do, feel free to submit patches to Gerrit [3] once you are ready!

[1]: https://www.asterisk.org/community/discuss
[2]: https://www.irccloud.com
[3]: https://wiki.asterisk.org/wiki/display/AST/Gerrit+Usage