summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-11-20 18:46:16 +0100
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-11-20 18:46:16 +0100
commitd6ddcc4159e43fa9997d0608ae91d3d0042f51af (patch)
tree82eef7ccf2f16367bcd7a5eea19f58ed5f9296a7 /plugins
parenteb41339039344311421cf0254a8e6f307cc01bd8 (diff)
fixed vfs_curl to handle size and content-type headers properly
Diffstat (limited to 'plugins')
-rw-r--r--plugins/vfs_curl/vfs_curl.c13
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) {