Ticket #2042 (closed defect: fixed)

Opened 2 months ago

Last modified 2 months ago

SRTP error in sending video RTP after hold and unhold

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

Description

Symptom

Log line:

Transport send_rtp() error: replay check failed (index too old) [err:259809]

Analysis

In updating media in both call hold and unhold, stream (or video stream) is destroyed and recreated. Before stream is destroyed, pjsua always saves last transmitted RTP seq number & timestamp, and pass them back to the new stream, so outgoing RTP will have continued seq number & timestamp.

Unfortunately for video, when call is on hold, currently no RTP frame will be sent, so both values last transmitted RTP seq number & timestamp are zero, and pjsua saves them when video stream (of a call hold) is destroyed. When a new video stream is created (for call unhold), the zero values will be used to initiate it. This will make outgoing RTP seq number restarted/discontinued, and a restarted RTP seq number will upset SRTP.

In audio stream, normally there are still some outgoing RTPs (for keep-alive) when call is on hold, so the issue may not appear on audio stream.

Change History

comment:1 Changed 2 months ago by nanang

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

In 5651:

Fix #2042: Fixed SRTP error in sending video RTP after call hold and unhold.

Note: See TracTickets for help on using tickets.