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 762219 - rtpsession: don't act on suspicious BYE RTCP
rtpsession: don't act on suspicious BYE RTCP
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other All
: Normal major
: 1.8.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-02-17 19:17 UTC by Håvard Graff (hgr)
Modified: 2016-05-25 08:09 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
test and fix (7.58 KB, patch)
2016-02-17 19:17 UTC, Håvard Graff (hgr)
needs-work Details | Review
rtpsession: don't act on suspicious BYE RTCP (7.02 KB, patch)
2016-05-15 09:49 UTC, Sebastian Dröge (slomo)
needs-work Details | Review
rtpsession: don't act on suspicious BYE RTCP (7.68 KB, patch)
2016-05-16 07:42 UTC, Mikhail Fludkov
committed Details | Review

Description Håvard Graff (hgr) 2016-02-17 19:17:58 UTC
Created attachment 321539 [details] [review]
test and fix

Some endpoints (like Tandberg E20) can send BYE packet containing our
internal SSRC. I this case we would detect SSRC collision and get rid
of the source at some point. But because we are still sending packets
with that SSRC the source will be recreated immediately.
This brand new internal source will not have some variables incorrectly
set in its state. For example 'seqnum-base` and `clock-rate` values will be
-1.
The fix is not to act on BYE RTCP if it contains internal or unknown
SSRC.
Comment 1 Sebastian Dröge (slomo) 2016-05-15 09:49:39 UTC
Created attachment 327922 [details] [review]
rtpsession: don't act on suspicious BYE RTCP

Some endpoints (like Tandberg E20) can send BYE packet containing our
internal SSRC. I this case we would detect SSRC collision and get rid
of the source at some point. But because we are still sending packets
with that SSRC the source will be recreated immediately.
This brand new internal source will not have some variables incorrectly
set in its state. For example 'seqnum-base` and `clock-rate` values will be
-1.
The fix is not to act on BYE RTCP if it contains internal or unknown
SSRC.
Comment 2 Sebastian Dröge (slomo) 2016-05-15 09:52:23 UTC
Review of attachment 327922 [details] [review]:

::: tests/check/elements/rtpsession.c
@@ +678,3 @@
+      g_value_get_boxed (gst_structure_get_value (stats, "source-stats"));
+  g_assert (stats_arr != NULL);
+  fail_unless (stats_arr->n_values >= 1);

I changed this to go through the array, there are > 1 most of the time it seems

@@ +759,3 @@
+  g_assert (gst_test_clock_crank (testclock));
+  gst_buffer_unref (gst_harness_pull (h_rtcp));
+  fail_unless (cb_called);

This often fails
Comment 3 Mikhail Fludkov 2016-05-16 07:42:16 UTC
Created attachment 327958 [details] [review]
rtpsession: don't act on suspicious BYE RTCP

Thanks for the review @slomo. The test should be fixed now.
Comment 4 Sebastian Dröge (slomo) 2016-05-20 06:28:59 UTC
Attachment 327958 [details] pushed as ee7e80d - rtpsession: don't act on suspicious BYE RTCP