souphttpsrc: reset read_position when reading fails
authorMichael Olbrich <m.olbrich@pengutronix.de>
Wed, 26 Oct 2016 06:51:40 +0000 (08:51 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 26 Oct 2016 13:57:28 +0000 (16:57 +0300)
commit8666b7d871efac3647ff35470c6766b904387d3e
tree3c333d0128fa0bc2af906ed7e2a3215439a8f232
parentf6b2fc10ff7acc314bb46f233e3c9d924009b34c
souphttpsrc: reset read_position when reading fails

souphttpsrc maintains two variables for the position:
 * 'request_position' is where we want to be
 * 'read_position' is where we are
During Normal operations both are updated in sync when data arrives. A seek
changes 'request_position' but not 'read_position'.
When the two positions get out of sync, then a new request is send and the
'Range' header is adjusted to the current 'request_position'.

Without this patch, if reading fails, then the source is destroyed. This
triggers a new request, but the range remains unchanged. As a result, the
old range is used and old data will be read.

Changing the 'read_position' to -1 makes it explicitly different from
'request_position' and as a result the 'Range' header is updated correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=773509
ext/soup/gstsouphttpsrc.c