diff options
author | 2009-11-20 18:46:16 +0100 | |
---|---|---|
committer | 2009-11-20 18:46:16 +0100 | |
commit | d6ddcc4159e43fa9997d0608ae91d3d0042f51af (patch) | |
tree | 82eef7ccf2f16367bcd7a5eea19f58ed5f9296a7 /plugins | |
parent | eb41339039344311421cf0254a8e6f307cc01bd8 (diff) |
fixed vfs_curl to handle size and content-type headers properly
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/vfs_curl/vfs_curl.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/plugins/vfs_curl/vfs_curl.c b/plugins/vfs_curl/vfs_curl.c index 42211fe3..61f3794b 100644 --- a/plugins/vfs_curl/vfs_curl.c +++ b/plugins/vfs_curl/vfs_curl.c @@ -73,7 +73,7 @@ http_content_header_handler (void *ptr, size_t size, size_t nmemb, void *stream) static size_t http_curl_write (void *ptr, size_t size, size_t nmemb, void *stream) { -// trace ("http_curl_write %d bytes\n", size * nmemb); + trace ("http_curl_write %d bytes\n", size * nmemb); int avail = size * nmemb; HTTP_FILE *fp = (HTTP_FILE *)stream; if (fp->status == STATUS_ABORTED) { @@ -119,6 +119,12 @@ http_curl_write (void *ptr, size_t size, size_t nmemb, void *stream) { fp->gotheader = 1; } } + + deadbeef->mutex_lock (fp->mutex); + if (fp->status == STATUS_INITIAL && fp->gotheader) { + fp->status = STATUS_READING; + } + deadbeef->mutex_unlock (fp->mutex); while (avail > 0) { deadbeef->mutex_lock (fp->mutex); if (fp->status == STATUS_SEEK) { @@ -328,7 +334,7 @@ http_thread_func (uintptr_t ctx) { } #endif #endif - fp->status = STATUS_STARTING; +// fp->status = STATUS_STARTING; trace ("vfs_curl: started loading data\n"); for (;;) { @@ -382,9 +388,6 @@ http_thread_func (uintptr_t ctx) { #endif curl_easy_setopt (curl, CURLOPT_PROXYTYPE, curlproxytype); } - deadbeef->mutex_lock (fp->mutex); - fp->status = STATUS_READING; - deadbeef->mutex_unlock (fp->mutex); status = curl_easy_perform (curl); trace ("vfs_curl: curl_easy_perform status=%d\n", status); if (status != 0) { |