GNOME Bugzilla – Bug 675453
rtspsrc: only EOS if BYE came from SSRC of the stream
Last modified: 2013-02-06 12:56:16 UTC
Created attachment 213455 [details] [review] patch I run a player that connects via rtp/rtcp to a device on a network where other clients are connected to the same source. It happens that my player sometime exits because it receive a EOS when another client exits, even if it is not a sender. I temporary modified rtpsession adding a check in session_cleanup to emit on_timeout only when the last sender leaves the session, because this call generates the EOS push that makes the application exit. You can found a patch in attachments, maybe should it be better to involve also on_sender_timeout?
This is not right, it breaks BYE reporting. The proper fix should be done in rtspsrc. When on_bye_ssrc is called, rtspsrc should check if the BYE came from the SSRC of the stream and only EOS when that is the case, currently it always goes EOS regardless of the SSRC.
Created attachment 213994 [details] [review] ssrc check Yes, you are right, this is the best way. I tried to implement it adding a check on on_bye_ssrc and on_timeout, comparing source ssrc (temporarily obtained converting it in RTPSource, I had to include rtpsource.h) and stream ssrc, but, while source ssrc is correct, stream ssrc is always 0.
commit 0adf1252f4c61e45182b9669b42b704353560cf1 Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Wed Feb 6 13:52:26 2013 +0100 rtspsrc: only EOS when our source sends BYE Only EOS when we receive a BYE event from the SSRC of our stream. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=675453 commit 2e2426e0fa3bb944a863ec545243e081294af173 Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Wed Feb 6 13:47:51 2013 +0100 rtspsrc: save the stream SSRC