[Bug 795396] New: rtsp-client: tunneled streams can stop streaming if client reads slowly and uses RTSP as keep-alive
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Fri Apr 20 09:09:37 UTC 2018
https://bugzilla.gnome.org/show_bug.cgi?id=795396
Bug ID: 795396
Summary: rtsp-client: tunneled streams can stop streaming if
client reads slowly and uses RTSP as keep-alive
Classification: Platform
Product: GStreamer
Version: git master
OS: Linux
Status: NEW
Severity: normal
Priority: Normal
Component: gst-rtsp-server
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: branko.subasic at axis.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
When tunneling RTP, all data, rtsp, rtp, and rtcp, is written on the same
connection. The connection has a backlog where data is placed if it can not be
written on the socket immediately. The backlog is limited and when it's full
the thread trying to write will hang on a GCond until there's room in the
backlog again. So, if the rtsp client tries to send a response on a rtsp
command and the backlog is full the client thread will hang until signaled that
it can continue. Unfortunately, the callback function handling the signaling is
executed in the same context.
Some years ago a patch was made that circumvents the issue by opening up (i.e.
removing the limit) the backlog while serving an rtsp request, and limiting it
again when we're done. That was commit
404a80e38a508c13a9e9b7f9b1da70f3ccb2a77b.
However, that patch missed a few error cases. If authentication fails or the
rtsp version supplied by the client is wrong then we will send a response
before we make the backlog unlimited. Which results in the same deadloc if the
backlog is full.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list