From 08e0c79cee11daf7872828c9c60e1b78b3f7d256 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6ran=20J=C3=B6nsson?= Date: Mon, 25 May 2015 16:36:18 +0200 Subject: [PATCH] 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 --- gst/rtsp-server/rtsp-client.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/gst/rtsp-server/rtsp-client.c b/gst/rtsp-server/rtsp-client.c index bedc464..c41d019 100644 --- a/gst/rtsp-server/rtsp-client.c +++ b/gst/rtsp-server/rtsp-client.c @@ -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); -- 2.7.4