mirror of https://github.com/axmolengine/axmol.git
Merge pull request #561 from adxeproject/dev
Merge Crash Fix #559 from dev
This commit is contained in:
commit
8426d87838
|
@ -45,6 +45,10 @@
|
||||||
// In the file:
|
// In the file:
|
||||||
// member function with suffix "Proc" designed called in DownloaderCURL::_threadProc
|
// member function with suffix "Proc" designed called in DownloaderCURL::_threadProc
|
||||||
// member function without suffix designed called in main thread
|
// member function without suffix designed called in main thread
|
||||||
|
// !!! Don't change the `long` type to `int32_t` at this file, because
|
||||||
|
// some curl variadic API require explicit number types, please refer to:
|
||||||
|
// https://curl.se/libcurl/c/curl_easy_getinfo.html
|
||||||
|
// https://curl.se/libcurl/c/curl_easy_setopt.html
|
||||||
|
|
||||||
#define CC_CURL_POLL_TIMEOUT_MS 50 // wait until DNS query done
|
#define CC_CURL_POLL_TIMEOUT_MS 50 // wait until DNS query done
|
||||||
|
|
||||||
|
@ -507,15 +511,15 @@ private:
|
||||||
|
|
||||||
if (task->background)
|
if (task->background)
|
||||||
{
|
{
|
||||||
curl_easy_setopt(handle, CURLOPT_NOPROGRESS, false);
|
curl_easy_setopt(handle, CURLOPT_NOPROGRESS, 0L);
|
||||||
curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, task.get());
|
curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, task.get());
|
||||||
curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, _progressCallbackProc);
|
curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, _progressCallbackProc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
curl_easy_setopt(handle, CURLOPT_NOPROGRESS, true);
|
curl_easy_setopt(handle, CURLOPT_NOPROGRESS, 1L);
|
||||||
}
|
}
|
||||||
curl_easy_setopt(handle, CURLOPT_FAILONERROR, true);
|
curl_easy_setopt(handle, CURLOPT_FAILONERROR, 1L);
|
||||||
curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1L);
|
curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1L);
|
||||||
|
|
||||||
curl_easy_setopt(handle, CURLOPT_OPENSOCKETFUNCTION, _openSocketCallback);
|
curl_easy_setopt(handle, CURLOPT_OPENSOCKETFUNCTION, _openSocketCallback);
|
||||||
|
@ -535,8 +539,8 @@ private:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// get header options
|
// get header options
|
||||||
curl_easy_setopt(handle, CURLOPT_HEADER, 1);
|
curl_easy_setopt(handle, CURLOPT_HEADER, 1L);
|
||||||
curl_easy_setopt(handle, CURLOPT_NOBODY, 1);
|
curl_easy_setopt(handle, CURLOPT_NOBODY, 1L);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (!sProxy.empty())
|
// if (!sProxy.empty())
|
||||||
|
@ -548,20 +552,14 @@ private:
|
||||||
curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, hints.timeoutInSeconds);
|
curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, hints.timeoutInSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const int32_t LOW_SPEED_LIMIT = 1;
|
curl_easy_setopt(handle, CURLOPT_LOW_SPEED_LIMIT, 1L);
|
||||||
static const int32_t LOW_SPEED_TIME = 10;
|
curl_easy_setopt(handle, CURLOPT_LOW_SPEED_TIME, 10L);
|
||||||
curl_easy_setopt(handle, CURLOPT_LOW_SPEED_LIMIT, LOW_SPEED_LIMIT);
|
|
||||||
curl_easy_setopt(handle, CURLOPT_LOW_SPEED_TIME, LOW_SPEED_TIME);
|
|
||||||
|
|
||||||
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0);
|
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0L);
|
||||||
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0);
|
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||||
|
|
||||||
static const int MAX_REDIRS = 5;
|
curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
if (MAX_REDIRS)
|
curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 5L);
|
||||||
{
|
|
||||||
curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, true);
|
|
||||||
curl_easy_setopt(handle, CURLOPT_MAXREDIRS, MAX_REDIRS);
|
|
||||||
}
|
|
||||||
|
|
||||||
coTask->_curl = handle;
|
coTask->_curl = handle;
|
||||||
|
|
||||||
|
@ -574,7 +572,7 @@ private:
|
||||||
CURLcode rc = CURLE_OK;
|
CURLcode rc = CURLE_OK;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
int32_t httpResponseCode = 0;
|
long httpResponseCode = 0;
|
||||||
rc = curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &httpResponseCode);
|
rc = curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &httpResponseCode);
|
||||||
if (CURLE_OK != rc)
|
if (CURLE_OK != rc)
|
||||||
{
|
{
|
||||||
|
@ -612,7 +610,7 @@ private:
|
||||||
|
|
||||||
// set header info to coTask
|
// set header info to coTask
|
||||||
std::lock_guard<std::recursive_mutex> lock(coTask->_mutex);
|
std::lock_guard<std::recursive_mutex> lock(coTask->_mutex);
|
||||||
coTask->_totalBytesExpected = (int64_t)contentLen;
|
coTask->_totalBytesExpected = static_cast<int64_t>(contentLen);
|
||||||
coTask->_acceptRanges = acceptRanges;
|
coTask->_acceptRanges = acceptRanges;
|
||||||
if (acceptRanges && fileSize > 0)
|
if (acceptRanges && fileSize > 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue