[Home]

Summary:ASTERISK-26201: Asterisk fails to re-activate an inactive media session (after remote HOLD)
Reporter:Rudi (rudolf)Labels:
Date Opened:2016-07-15 04:47:12Date Closed:2016-07-15 05:27:48
Priority:MajorRegression?
Status:Closed/CompleteComponents:Channels/chan_sip/General
Versions:11.22.0 Frequency of
Occurrence
Constant
Related
Issues:
Environment:Attachments:( 0) ast_dump.txt
( 1) hold_no_sound.pcap
Description:1. Phone A (our PBX) calls Phone B (Broadworks) to establish a call
2. Phone B transfers (attendant transfer) a call to Phone C (Broadworks) and so puts call on hold until call is transferred
3. when Phone C is on the line there is only one way audio from Phone C to Phone A.

Examining SIP trace:
1. Start Hold - we receive ReInvite with sendonly and we reply with recvonly
2. We receive ReInvite with empty attribute and we answer with recvonly
3. We recieve ReInvite without SDP and we answer with sendrecv
4. End Hold - we receive ReInvite with empty attribute and we answer with sendrecv

Comments:By: Asterisk Team (asteriskteam) 2016-07-15 04:47:13.735-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: Rudi (rudolf) 2016-07-15 04:51:04.316-0500

Attached SIP trace and asterisk trace.

By: Joshua C. Colp (jcolp) 2016-07-15 05:00:20.540-0500

If you set ignoresdpversion to yes does this change the behavior?

By: Rudi (rudolf) 2016-07-15 05:20:22.788-0500

Yes if we set ignoresdpversion to yes there is no issue with sound. How does this affect this issue? I mean - SDP version is always 0, but if we test only with Phone B setting HOLD/unHOLD we got no issues, but if Phone B does the transfer there is no sound?

By: Joshua C. Colp (jcolp) 2016-07-15 05:27:29.323-0500

The SDP from the Broadworks doesn't appear to be conforming to the RFC (3264). It's seemingly passing through the SDP and it's being non-compliant. The specific part of the RFC that is applicable:

{noformat}
When issuing an offer that modifies the session,
  the "o=" line of the new SDP MUST be identical to that in the
  previous SDP, except that the version in the origin field MUST
  increment by one from the previous SDP.  If the version in the origin
  line does not increment, the SDP MUST be identical to the SDP with
  that version number.  The answerer MUST be prepared to receive an
  offer that contains SDP with a version that has not changed; this is
  effectively a no-op.  However, the answerer MUST generate a valid
  answer (which MAY be the same as the previous SDP from the answerer,
  or MAY be different), according to the procedures defined in Section
  6.
{noformat}

Initially it works as expected, with the version being incremented in the SDP. Afterwards though it's a different session identifier and has a version less than the previous. Without ignoresdpversion set to yes the code assumes it has not changed. Setting it to yes stops the version check from happening and it's processed as normal.

By: Joshua C. Colp (jcolp) 2016-07-15 05:27:48.603-0500

This isn't a bug in Asterisk itself but with Broadworks, and a workaround is available.