From: Sebastian Dröge Date: Fri, 13 Feb 2015 10:21:16 +0000 (+0200) Subject: rtsp-client: Only error out in PLAY if seeking actually failed X-Git-Tag: 1.6.0~76 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=51ed357597eec8d3ca51427f4788afada3154c45;p=platform%2Fupstream%2Fgst-rtsp-server.git rtsp-client: Only error out in PLAY if seeking actually failed If the media was just not seekable, we continue from whatever position we are and let the client decide if that is what is wanted or not. Only if the actual seek failed, we can't really recover and should error out. --- diff --git a/gst/rtsp-server/rtsp-client.c b/gst/rtsp-server/rtsp-client.c index 8e8f73a..bedc464 100644 --- a/gst/rtsp-server/rtsp-client.c +++ b/gst/rtsp-server/rtsp-client.c @@ -1163,13 +1163,16 @@ handle_play_request (GstRTSPClient * client, GstRTSPContext * ctx) res = gst_rtsp_message_get_header (ctx->request, GST_RTSP_HDR_RANGE, &str, 0); if (res == GST_RTSP_OK) { if (gst_rtsp_range_parse (str, &range) == GST_RTSP_OK) { + GstRTSPMediaStatus media_status; + /* we have a range, seek to the position */ unit = range->unit; - if (!gst_rtsp_media_seek (media, range)) { - gst_rtsp_range_free (range); - goto seek_failed; - } + gst_rtsp_media_seek (media, range); gst_rtsp_range_free (range); + + media_status = gst_rtsp_media_get_status (media); + if (media_status == GST_RTSP_MEDIA_STATUS_ERROR) + goto seek_failed; } } diff --git a/gst/rtsp-server/rtsp-media.c b/gst/rtsp-server/rtsp-media.c index f97490b..65ad9ff 100644 --- a/gst/rtsp-server/rtsp-media.c +++ b/gst/rtsp-server/rtsp-media.c @@ -1994,6 +1994,7 @@ seek_failed: { g_rec_mutex_unlock (&priv->state_lock); GST_INFO ("seeking failed"); + gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_ERROR); return FALSE; } preroll_failed: