From 026ab2385c64837dc1c215efea8fb0f87ac2efb5 Mon Sep 17 00:00:00 2001 From: waker Date: Sat, 30 Oct 2010 13:06:26 +0200 Subject: fixed regression in seeking http streams --- plugins/vfs_curl/vfs_curl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'plugins/vfs_curl') diff --git a/plugins/vfs_curl/vfs_curl.c b/plugins/vfs_curl/vfs_curl.c index 79040d99..c3a627bd 100644 --- a/plugins/vfs_curl/vfs_curl.c +++ b/plugins/vfs_curl/vfs_curl.c @@ -229,6 +229,7 @@ http_curl_write (void *ptr, size_t size, size_t nmemb, void *stream) { if (!fp->icyheader && avail >= 10 && !memcmp (ptr, "ICY 200 OK", 10)) { trace ("icy headers in the stream\n"); fp->icyheader = 1; + fp->length = -1; } if (fp->icyheader) { if (fp->nheaderpackets > 10) { @@ -391,7 +392,6 @@ http_content_header_handler (void *ptr, size_t size, size_t nmemb, void *stream) uint8_t key[256]; uint8_t value[256]; int refresh_playlist = 0; - fp->length = -1; // reset length on every request/redirect while (p < end) { if (p <= end - 4) { if (!memcmp (p, "\r\n\r\n", 4)) { @@ -412,7 +412,9 @@ http_content_header_handler (void *ptr, size_t size, size_t nmemb, void *stream) fp->content_type = strdup (value); } else if (!strcasecmp (key, "Content-Length")) { - fp->length = atoi (value); + if (!fp->icyheader) { // icy streams must be infinite + fp->length = atoi (value); + } } else if (!strcasecmp (key, "icy-name")) { if (fp->track) { -- cgit v1.2.3