diff --git a/src/d_netfil.c b/src/d_netfil.c index 505a2fefd..252aaabdf 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -62,8 +62,8 @@ static boolean AddFileToSendQueue(INT32 node, const char *filename, UINT8 fileid); #ifdef HAVE_CURL -size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream); -int curlprogress_callback(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow); +static size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream); +static int curlprogress_callback(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow); #endif // Sender structure @@ -1778,21 +1778,34 @@ filestatus_t findfile(char *filename, const UINT8 *wantedmd5sum, boolean complet } #ifdef HAVE_CURL -size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream) +static size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written; written = fwrite(ptr, size, nmemb, stream); return written; } -int curlprogress_callback(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) +static int curlprogress_callback(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) { + time_t curtime; + (void)clientp; (void)ultotal; (void)ulnow; // Function prototype requires these but we won't use, so just discard + + curtime = time(NULL); + curl_dlnow = dlnow; curl_dltotal = dltotal; - getbytes = curl_dlnow / (time(NULL) - curl_starttime); // To-do: Make this more accurate??? + + if (curtime > curl_starttime) + { + getbytes = curl_dlnow / (curtime - curl_starttime); // To-do: Make this more accurate??? + } + else + { + getbytes = 0; + } return 0; }