[Home]

Summary:ASTERISK-28659: res_pjsip_sdp_rtp: Bundle includes non-existent media stream if codecs create additional streams and offer does not have them
Reporter:nappsoft (nappsoft)Labels:patch webrtc
Date Opened:2019-12-13 09:35:48.000-0600Date Closed:2019-12-18 05:41:47.000-0600
Priority:MajorRegression?Yes
Status:Closed/CompleteComponents:Resources/res_pjsip_sdp_rtp Resources/res_pjsip_session
Versions:16.7.0 17.1.0 Frequency of
Occurrence
Constant
Related
Issues:
Environment:Attachments:( 0) ASTERISK-28659.diff
( 1) sdp.txt
Description:Our WebRTC implementation for video conferences (based on sip.js) was working as expected with Asterisk 16.6.2. We offer 3 modes: audio only (as sender, of course the sender can receive video streams...), audio+video and audio+screen.

With Asterisk 16.7.0-rc1 the implementation stopped working if the sender only offers audio but no video stream. The only thing that differs in the SDP sent by Asterisk is the following line:

a=group:BUNDLE 0

which changed to:

a=group:BUNDLE 0 video-1

I was able to track down the changed behavior to the following commit: https://github.com/asterisk/asterisk/commit/6f0a69c51a25fa63405b991d7c20baa229eef96a

res_pjsip_session: initialize pending's topology to endpoint's
Comments:By: Asterisk Team (asteriskteam) 2019-12-13 09:35:50.311-0600

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].

Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.

By: Joshua C. Colp (jcolp) 2019-12-13 09:42:19.697-0600

What is the actual full SDP negotiation and SIP traffic?

By: nappsoft (nappsoft) 2019-12-13 09:48:11.293-0600

note: above was the "fixed" version (reverted the commit in question), without the reverted commit I'd get

a=group:BUNDLE 0 video-1

By: Kevin Harwell (kharwell) 2019-12-13 09:59:47.778-0600

[~nappsoft] thanks for testing the RC!

By: Joshua C. Colp (jcolp) 2019-12-13 10:31:59.434-0600

Please try this attached patch and see if it resolves the problem.

By: nappsoft (nappsoft) 2019-12-16 00:57:19.735-0600

I can confirm that the patch solves the issue. (Didn't test any other thing than WebRTC conferencing though)

By: Friendly Automation (friendly-automation) 2019-12-18 05:41:49.346-0600

Change 13437 merged by Joshua C. Colp:
res_pjsip_session: Set stream state on created streams for incoming SDP.

[https://gerrit.asterisk.org/c/asterisk/+/13437|https://gerrit.asterisk.org/c/asterisk/+/13437]

By: Friendly Automation (friendly-automation) 2019-12-18 05:45:25.133-0600

Change 13439 merged by Joshua C. Colp:
res_pjsip_session: Set stream state on created streams for incoming SDP.

[https://gerrit.asterisk.org/c/asterisk/+/13439|https://gerrit.asterisk.org/c/asterisk/+/13439]

By: Friendly Automation (friendly-automation) 2019-12-18 05:46:07.760-0600

Change 13447 merged by Friendly Automation:
res_pjsip_session: Set stream state on created streams for incoming SDP.

[https://gerrit.asterisk.org/c/asterisk/+/13447|https://gerrit.asterisk.org/c/asterisk/+/13447]

By: Friendly Automation (friendly-automation) 2019-12-18 05:46:48.555-0600

Change 13438 merged by Joshua C. Colp:
res_pjsip_session: Set stream state on created streams for incoming SDP.

[https://gerrit.asterisk.org/c/asterisk/+/13438|https://gerrit.asterisk.org/c/asterisk/+/13438]

By: Friendly Automation (friendly-automation) 2019-12-18 05:49:35.561-0600

Change 13436 merged by Joshua C. Colp:
res_pjsip_session: Set stream state on created streams for incoming SDP.

[https://gerrit.asterisk.org/c/asterisk/+/13436|https://gerrit.asterisk.org/c/asterisk/+/13436]