mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
fix CurlRequests::update
This commit is contained in:
parent
432687c6ab
commit
bb11a198f5
2 changed files with 41 additions and 17 deletions
|
|
@ -8,4 +8,4 @@ end, function (code)
|
|||
response_received = true
|
||||
end)
|
||||
|
||||
app.sleep_until(function () return response_received end, nil, 10)
|
||||
app.sleep_until(function () return response_received end, nil, 5)
|
||||
|
|
|
|||
|
|
@ -114,7 +114,18 @@ public:
|
|||
} else {
|
||||
curl_easy_setopt(curl, CURLOPT_MAXFILESIZE, request.maxSize);
|
||||
}
|
||||
curl_multi_add_handle(multiHandle, curl);
|
||||
{
|
||||
CURLMcode res = curl_multi_add_handle(multiHandle, curl);
|
||||
if (res != CURLM_OK) {
|
||||
auto message = curl_multi_strerror(res);
|
||||
logger.error() << message << " (" << request.url << ")";
|
||||
if (request.onResponse) {
|
||||
request.onResponse({0, {}, {}});
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
{
|
||||
int running;
|
||||
CURLMcode res = curl_multi_perform(multiHandle, &running);
|
||||
if (res != CURLM_OK) {
|
||||
|
|
@ -125,15 +136,27 @@ public:
|
|||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
entry->request = std::move(request);
|
||||
requests.push_back(std::move(entry));
|
||||
}
|
||||
|
||||
void update() override {
|
||||
if (CURLMcode res = curl_multi_poll(
|
||||
multiHandle,
|
||||
nullptr,
|
||||
0,
|
||||
1000,
|
||||
nullptr
|
||||
)) {
|
||||
auto message = curl_multi_strerror(res);
|
||||
logger.error() << message;
|
||||
return;
|
||||
}
|
||||
|
||||
int messagesLeft;
|
||||
int running;
|
||||
CURLMcode res = curl_multi_perform(multiHandle, &running);
|
||||
if (res != CURLM_OK) {
|
||||
if (CURLMcode res = curl_multi_perform(multiHandle, &running)) {
|
||||
auto message = curl_multi_strerror(res);
|
||||
logger.error() << message;
|
||||
return;
|
||||
|
|
@ -155,6 +178,7 @@ public:
|
|||
return;
|
||||
}
|
||||
auto entry = std::move(*found);
|
||||
auto& req = entry->request;
|
||||
requests.erase(found);
|
||||
|
||||
int response = -1;
|
||||
|
|
@ -163,9 +187,9 @@ public:
|
|||
auto headers = std::move(entry->headers);
|
||||
if (response == 0) {
|
||||
auto message = std::string(curl_easy_strerror(result));
|
||||
logger.error() << message << " (" << entry->request.url << ")";
|
||||
if (entry->request.onResponse) {
|
||||
entry->request.onResponse(
|
||||
logger.error() << message << " (" << req.url << ")";
|
||||
if (req.onResponse) {
|
||||
req.onResponse(
|
||||
{response,
|
||||
std::move(headers),
|
||||
std::vector<char>(
|
||||
|
|
@ -182,8 +206,8 @@ public:
|
|||
totalDownload += size;
|
||||
}
|
||||
totalDownload += entry->buffer.size();
|
||||
if (entry->request.onResponse) {
|
||||
entry->request.onResponse({
|
||||
if (req.onResponse) {
|
||||
req.onResponse({
|
||||
response,
|
||||
std::move(headers),
|
||||
std::move(entry->buffer),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue