After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 773891 - rtpjitterbuffer: fix timer-reuse bug
rtpjitterbuffer: fix timer-reuse bug
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other All
: Normal major
: 1.10.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-11-03 13:06 UTC by Håvard Graff (hgr)
Modified: 2016-12-05 09:17 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
test and fix (4.44 KB, patch)
2016-11-03 13:06 UTC, Håvard Graff (hgr)
none Details | Review
updated patch with test-fix (6.10 KB, patch)
2016-11-03 14:06 UTC, Håvard Graff (hgr)
committed Details | Review

Description Håvard Graff (hgr) 2016-11-03 13:06:52 UTC
Created attachment 339019 [details] [review]
test and fix

hen doing rtx, the jitterbuffer will always add an rtx-timer for the next
sequence number.

In the case of the packet corresponding to that sequence number arriving,
that same timer will be reused, and simply moved on to wait for the
following sequence number etc.

Once an rtx-timer expires (after all retries), it will be rescheduled as
a lost-timer instead for the same sequence number.

Now, if this particular sequence-number now arrives (after the timer has
become a lost-timer), the reuse mechanism *should* now set a new
rtx-timer for the next sequence number, but the bug is that it does
not change the timer-type, and hence schedules a lost-timer for that
following sequence number, with the result that you will have a very
early lost-event for a packet that might still arrive, and you will
never be able to send any rtx for this packet.

Found by Erlend Graff - erlend@pexip.com
Comment 1 Håvard Graff (hgr) 2016-11-03 14:06:18 UTC
Created attachment 339030 [details] [review]
updated patch with test-fix
Comment 2 Sebastian Dröge (slomo) 2016-11-04 14:58:07 UTC
commit 1a4393fb4d29a296b8c131041b46f25de8698c1b
Author: Havard Graff <havard.graff@gmail.com>
Date:   Thu Nov 3 15:03:59 2016 +0100

    rtpjitterbuffer: fix timer-reuse bug
    
    When doing rtx, the jitterbuffer will always add an rtx-timer for the next
    sequence number.
    
    In the case of the packet corresponding to that sequence number arriving,
    that same timer will be reused, and simply moved on to wait for the
    following sequence number etc.
    
    Once an rtx-timer expires (after all retries), it will be rescheduled as
    a lost-timer instead for the same sequence number.
    
    Now, if this particular sequence-number now arrives (after the timer has
    become a lost-timer), the reuse mechanism *should* now set a new
    rtx-timer for the next sequence number, but the bug is that it does
    not change the timer-type, and hence schedules a lost-timer for that
    following sequence number, with the result that you will have a very
    early lost-event for a packet that might still arrive, and you will
    never be able to send any rtx for this packet.
    
    Found by Erlend Graff - erlend@pexip.com
    
    https://bugzilla.gnome.org/show_bug.cgi?id=773891