Opened 10 years ago

Closed 9 years ago

#1079 closed defect (fixed)

Media transport should be kept alive during double-hold scenario

Reported by: bennylp Owned by: bennylp
Priority: normal Milestone: release-1.7
Component: pjsua-lib Version: trunk
Keywords: sipit26 Cc:
Backport to 1.x milestone: Backported:

Description (last modified by bennylp)

In double hold situation, media will be marked as a=inactive, and currently the media will be closed. This would cause the media transport to be reinitialized when the stream is resumed.

There are two known possible failures with this behavior, with ICE and SRTP. With ICE, we unnecessarily restart ICE negotiation, which will fail if remote still has the ICE session intact. And similarly this will cause inconsistent states between local and remote SRTP endpoints if only one side restarts the session.

More over, we should keep sending keep-alive packets even when the media is marked as inactive. This would be the argument to keep ICE session alive when media is inactive.

Change History (2)

comment:1 Changed 9 years ago by bennylp

  • Description modified (diff)
  • Summary changed from ICE session should be kept alive even when media is marked as inactive to Media transport should be kept alive during double-hold scenario

comment:2 Changed 9 years ago by bennylp

  • Resolution set to fixed
  • Status changed from new to closed

(In [3219]) Fixed #1079 (Media transport should be kept alive during double-hold scenario). Details:

  • now the stream will be destroyed but the media transport will be kept alive during doublehold scenario
  • small fix in SRTP to also negotiate crypto even when the media is marked as inactive, otherwise it's possible that an "optional" endpoint would create RTP/AVP offer and send it to "mandatory" endpoint, which would be rejected and cause the media port to be set to zero
Note: See TracTickets for help on using tickets.