CURL *curle;
qboolean started;
int loadtype;
- unsigned long bytes_received; // for buffer
+ size_t bytes_received; // for buffer
double bytes_received_curl; // for throttling
double bytes_sent_curl; // for throttling
struct downloadinfo_s *next, *prev;
di->bytes_received += bytes;
- return ret; // why not ret / nmemb?
+ return ret;
+ // Why not ret / nmemb?
+ // Because CURLOPT_WRITEFUNCTION docs say to return the number of bytes.
+ // Yes, this is incompatible to fwrite(2).
}
typedef enum
++numdownloads_added;
}
+ if (curl_mutex) Thread_UnlockMutex(curl_mutex);
return false;
}
}
}
}
+ if (curl_mutex) Thread_UnlockMutex(curl_mutex);
return false;
}
else
if(maxspeed > 0)
{
double bytes = bytes_sent + bytes_received; // maybe smoothen a bit?
- curltime = realtime + bytes / (cl_curl_maxspeed.value * 1024.0);
+ curltime = realtime + bytes / (maxspeed * 1024.0);
bytes_sent = 0;
bytes_received = 0;
}
const char *thispack = FS_WhichPack(filename);
const char *packurl;
- if(!thispack)
+ if(!thispack || !*thispack)
return false;
p = strrchr(thispack, '/');