Summary: | ASTERISK-28036: Codec negotiation when incoming re-INVITE has no SDP | ||
Reporter: | Daniel Harper (danieleharper) | Labels: | |
Date Opened: | 2018-09-03 23:01:41 | Date Closed: | 2018-09-04 14:18:07 |
Priority: | Minor | Regression? | |
Status: | Closed/Complete | Components: | Channels/chan_pjsip Resources/res_pjsip_sdp_rtp |
Versions: | 13.22.0 15.5.0 | Frequency of Occurrence | |
Related Issues: | |||
Environment: | Centos 6.10, 64bit | Attachments: | |
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 |