Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SRTPCryptoContext#checkReplay may failed when resume from a paused secure video call #442

Open
cmeng-git opened this issue Sep 26, 2018 · 3 comments

Comments

@cmeng-git
Copy link

This Issue tracker is only for reporting bugs and tracking code related issues.

Before posting, please make sure you check community.jitsi.org to see if the same or similar bugs have already been discussed. General questions, installation help, and feature requests can also be posted to community.jitsi.org.

Description

  1. start a secured video call e.g. ZRTP
  2. Pause the secured video call
  3. Resume the secured video call
  4. You may need to repeat steps 2 and 3 to see the problem.

Current behavior

Pending on when the video call is resumed, the checkReplay() may return false because the seqNo is outsider the replay window. This causes video streaming to failed on both sending and receiving ends.
It seems that the video frame is continuously being acquired while video call is paused. However the acquired frames are not relayed to the SRTPCryptoContext for processing. Therefore the packet seqNo continuous to be incremented, without the guessIndex being updated.

Expected Behavior

The secured video call should not failed on resume. It has been verified that if a normal call (no ZRTP) is paused and resumed, it always resume without problem.

Possible Solution

The video streaming acquiring process must also be stopped while call is paused, so the seqNo is not changed until it is resumes.

Steps to reproduce

See Description

Environment details

Secured video call on Jitsi

@GNUDimarik
Copy link

I investigated this issue in some fork of jitsi and seems I remember the root cause. When you set call to pause library destroys contexsts and next checkReplay formula works like you started call again and returns wrong values ..
In one day I'll have time for fixing this ...

@ibauersachs
Copy link
Member

Are you sure the call context gets destroyed? What I remember is slightly different: Jitsi doesn't send a muted (i.e. just black) video stream if a call is on hold, thus the context never receives data to increment the counters.
This is AFAIK different for audio, where silence is actually transmitted.

@GNUDimarik
Copy link

Will check it later. After fixing some issues in jitsi desktop. Honestly don't remember exactly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants