mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
rtsp-client: No flush during Teardown.
When calling gst_rtsp_watch_write_data in gstrtspconnection.c and backlog is empty it can happen that just a part of a message will be sent and rest is in backlog queue. If then flush during teardown just a part of message will be sent.This can lead to client miss teardown response since it expect to get the last part of message. The flushing during teardown was introduced to fix a deadlock that now is fixed more generally in handle_request by temporary setting backlog size to unlimited. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=749845
This commit is contained in:
parent
550348738c
commit
08e0c79cee
1 changed files with 0 additions and 9 deletions
|
@ -839,17 +839,8 @@ handle_teardown_request (GstRTSPClient * client, GstRTSPContext * ctx)
|
|||
g_signal_emit (client, gst_rtsp_client_signals[SIGNAL_TEARDOWN_REQUEST],
|
||||
0, ctx);
|
||||
|
||||
/* make sure we unblock the backlog and don't accept new messages
|
||||
* on the watch */
|
||||
if (priv->watch != NULL)
|
||||
gst_rtsp_watch_set_flushing (priv->watch, TRUE);
|
||||
|
||||
gst_rtsp_session_media_set_state (sessmedia, GST_STATE_NULL);
|
||||
|
||||
/* allow messages again so that we can send the reply */
|
||||
if (priv->watch != NULL)
|
||||
gst_rtsp_watch_set_flushing (priv->watch, FALSE);
|
||||
|
||||
/* unmanage the media in the session, returns false if all media session
|
||||
* are torn down. */
|
||||
keep_session = gst_rtsp_session_release_media (session, sessmedia);
|
||||
|
|
Loading…
Reference in a new issue