mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-12 14:31:50 +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
|
response_received = true
|
||||||
end)
|
end)
|
||||||
|
|
||||||
app.sleep_until(function () return response_received end, nil, 10)
|
app.sleep_until(function () return response_received end, nil, 5)
|
||||||
|
|
|
||||||
|
|
@ -114,26 +114,49 @@ public:
|
||||||
} else {
|
} else {
|
||||||
curl_easy_setopt(curl, CURLOPT_MAXFILESIZE, request.maxSize);
|
curl_easy_setopt(curl, CURLOPT_MAXFILESIZE, request.maxSize);
|
||||||
}
|
}
|
||||||
curl_multi_add_handle(multiHandle, curl);
|
{
|
||||||
int running;
|
CURLMcode res = curl_multi_add_handle(multiHandle, curl);
|
||||||
CURLMcode res = curl_multi_perform(multiHandle, &running);
|
if (res != CURLM_OK) {
|
||||||
if (res != CURLM_OK) {
|
auto message = curl_multi_strerror(res);
|
||||||
auto message = curl_multi_strerror(res);
|
logger.error() << message << " (" << request.url << ")";
|
||||||
logger.error() << message << " (" << request.url << ")";
|
if (request.onResponse) {
|
||||||
if (request.onResponse) {
|
request.onResponse({0, {}, {}});
|
||||||
request.onResponse({0, {}, {}});
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
int running;
|
||||||
|
CURLMcode res = curl_multi_perform(multiHandle, &running);
|
||||||
|
if (res != CURLM_OK) {
|
||||||
|
auto message = curl_multi_strerror(res);
|
||||||
|
logger.error() << message << " (" << request.url << ")";
|
||||||
|
if (request.onResponse) {
|
||||||
|
request.onResponse({0, {}, {}});
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
entry->request = std::move(request);
|
entry->request = std::move(request);
|
||||||
requests.push_back(std::move(entry));
|
requests.push_back(std::move(entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
void update() override {
|
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 messagesLeft;
|
||||||
int running;
|
int running;
|
||||||
CURLMcode res = curl_multi_perform(multiHandle, &running);
|
if (CURLMcode res = curl_multi_perform(multiHandle, &running)) {
|
||||||
if (res != CURLM_OK) {
|
|
||||||
auto message = curl_multi_strerror(res);
|
auto message = curl_multi_strerror(res);
|
||||||
logger.error() << message;
|
logger.error() << message;
|
||||||
return;
|
return;
|
||||||
|
|
@ -155,6 +178,7 @@ public:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto entry = std::move(*found);
|
auto entry = std::move(*found);
|
||||||
|
auto& req = entry->request;
|
||||||
requests.erase(found);
|
requests.erase(found);
|
||||||
|
|
||||||
int response = -1;
|
int response = -1;
|
||||||
|
|
@ -163,9 +187,9 @@ public:
|
||||||
auto headers = std::move(entry->headers);
|
auto headers = std::move(entry->headers);
|
||||||
if (response == 0) {
|
if (response == 0) {
|
||||||
auto message = std::string(curl_easy_strerror(result));
|
auto message = std::string(curl_easy_strerror(result));
|
||||||
logger.error() << message << " (" << entry->request.url << ")";
|
logger.error() << message << " (" << req.url << ")";
|
||||||
if (entry->request.onResponse) {
|
if (req.onResponse) {
|
||||||
entry->request.onResponse(
|
req.onResponse(
|
||||||
{response,
|
{response,
|
||||||
std::move(headers),
|
std::move(headers),
|
||||||
std::vector<char>(
|
std::vector<char>(
|
||||||
|
|
@ -182,8 +206,8 @@ public:
|
||||||
totalDownload += size;
|
totalDownload += size;
|
||||||
}
|
}
|
||||||
totalDownload += entry->buffer.size();
|
totalDownload += entry->buffer.size();
|
||||||
if (entry->request.onResponse) {
|
if (req.onResponse) {
|
||||||
entry->request.onResponse({
|
req.onResponse({
|
||||||
response,
|
response,
|
||||||
std::move(headers),
|
std::move(headers),
|
||||||
std::move(entry->buffer),
|
std::move(entry->buffer),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue