aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <mk@cm4all.com>2008-11-20 12:45:17 +0100
committerMax Kellermann <mk@cm4all.com>2008-11-20 12:45:17 +0100
commita8f69429b0a6492bdcb8b4d59a28c8ba90b45aed (patch)
treec03538bf8258da35a148bc3105e8c2132799af54
parenta0dd5b7f2fb908a1e0c0bfea02ea9f1a3b1eaee8 (diff)
downloadmpd-a8f69429b0a6492bdcb8b4d59a28c8ba90b45aed.tar.gz
mpd-a8f69429b0a6492bdcb8b4d59a28c8ba90b45aed.tar.xz
mpd-a8f69429b0a6492bdcb8b4d59a28c8ba90b45aed.zip
input_curl: don't fail when seek to EOF is requested
HTTP servers respond with "416 Requested Range Not Satisfiable" when a client attempts to seek to the end of the file. Catch this special case in input_curl_seek(). This fixes a glitch in the ogg vorbis decoder plugin.
-rw-r--r--src/input_curl.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/input_curl.c b/src/input_curl.c
index 20b26a9ed..7c98cad7c 100644
--- a/src/input_curl.c
+++ b/src/input_curl.c
@@ -595,6 +595,14 @@ input_curl_seek(struct input_stream *is, off_t offset, int whence)
input_curl_easy_free(c);
+ if (is->offset == is->size) {
+ /* seek to EOF: simulate empty result; avoid
+ triggering a "416 Requested Range Not Satisfiable"
+ response */
+ c->eof = true;
+ return true;
+ }
+
ret = input_curl_easy_init(is);
if (!ret)
return false;