From 770bb07f3059a529a54a3fa3521da641afe25c5e Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 8 Nov 2017 16:34:01 +0100 Subject: [PATCH] souphttpsrc: Fix seeking back to 0 This is a regression introduced by "03db374 - souphttpsrc: retry request on early termination from the server" The problem was that when seeking back to 0, we would not end up calling add_range_header() which in addition to adding range headers *ALSO* sets the read_position to the requested one. This would result in a wide variety of later failures, like reading again and again instead of stopping properly. --- ext/soup/gstsouphttpsrc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c index 38e7b878c1..ff64d71c9f 100644 --- a/ext/soup/gstsouphttpsrc.c +++ b/ext/soup/gstsouphttpsrc.c @@ -1582,6 +1582,12 @@ gst_soup_http_src_do_request (GstSoupHTTPSrc * src, const gchar * method) src->stop_position); } + /* add_range_header() has the side effect of setting read_position to + * the requested position. This *needs* to be set regardless of having + * a message or not. Failure to do so would result in calculation being + * done with stale/wrong read position */ + src->read_position = src->request_position; + if (!src->msg) { if (!gst_soup_http_src_build_message (src, method)) { return GST_FLOW_ERROR;