diff options
author | Max Kellermann <mk@cm4all.com> | 2008-11-20 12:45:17 +0100 |
---|---|---|
committer | Max Kellermann <mk@cm4all.com> | 2008-11-20 12:45:17 +0100 |
commit | a8f69429b0a6492bdcb8b4d59a28c8ba90b45aed (patch) | |
tree | c03538bf8258da35a148bc3105e8c2132799af54 | |
parent | a0dd5b7f2fb908a1e0c0bfea02ea9f1a3b1eaee8 (diff) | |
download | mpd-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.c | 8 |
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; |