From 432687c6abd24d77757b616ed6cfbd666fec31f8 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 13 Sep 2026 17:55:12 +0300 Subject: [PATCH] cleanup request --- src/logic/scripting/lua/libs/libnetwork.cpp | 10 ---- src/network/Curl.cpp | 59 ++++++++------------- src/network/commons.hpp | 2 - 3 files changed, 22 insertions(+), 49 deletions(-) diff --git a/src/logic/scripting/lua/libs/libnetwork.cpp b/src/logic/scripting/lua/libs/libnetwork.cpp index 37ef3029d..475158dea 100644 --- a/src/logic/scripting/lua/libs/libnetwork.cpp +++ b/src/logic/scripting/lua/libs/libnetwork.cpp @@ -125,16 +125,6 @@ static int l_request(lua::State* L, network::Network& network) { std::move(response.body)} )); }; - request.onReject = [currentRequestId](network::HttpResponse response) { - push_event(NetworkEvent( - RESPONSE, - ResponseEventDto { - response.status, - false, - currentRequestId, - std::move(response.body)} - )); - }; network.request(std::move(request)); return lua::pushinteger(L, currentRequestId); diff --git a/src/network/Curl.cpp b/src/network/Curl.cpp index afa4be009..2acda8c8c 100644 --- a/src/network/Curl.cpp +++ b/src/network/Curl.cpp @@ -120,9 +120,10 @@ public: if (res != CURLM_OK) { auto message = curl_multi_strerror(res); logger.error() << message << " (" << request.url << ")"; - if (request.onReject) { - request.onReject({HTTP_BAD_GATEWAY, {}, {}}); + if (request.onResponse) { + request.onResponse({0, {}, {}}); } + return; } entry->request = std::move(request); requests.push_back(std::move(entry)); @@ -146,46 +147,25 @@ public: requests.begin(), requests.end(), [curl](const std::unique_ptr& entry) { - return entry->curl == curl; + return entry && entry->curl == curl; } ); - if (found == requests.end()) { + if (requests.empty() || found == requests.end()) { logger.error() << "could not find request for cURL handle"; return; } auto entry = std::move(*found); - auto& req = entry->request; - requests.erase(found); - if (msg->msg == CURLMSG_DONE) { - curl_multi_remove_handle(multiHandle, curl); - } int response = -1; CURLcode result = msg->data.result; curl_easy_getinfo(msg->easy_handle, CURLINFO_RESPONSE_CODE, &response); auto headers = std::move(entry->headers); - if (response == HTTP_OK) { - long size; - if (!curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &size)) { - totalUpload += size; - } - if (!curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &size)) { - totalDownload += size; - } - totalDownload += entry->buffer.size(); - if (req.onResponse) { - req.onResponse({ - response, - std::move(headers), - std::move(entry->buffer), - }); - } - } else if (response == 0) { + if (response == 0) { auto message = std::string(curl_easy_strerror(result)); - logger.error() << message << " (" << req.url << ")"; - if (req.onReject) { - req.onReject( + logger.error() << message << " (" << entry->request.url << ")"; + if (entry->request.onResponse) { + entry->request.onResponse( {response, std::move(headers), std::vector( @@ -194,15 +174,20 @@ public: ); } } else { - logger.error() << "response code " << response << " (" << req.url - << ")" - << (entry->buffer.empty() - ? "" - : std::to_string(entry->buffer.size()) + - " byte(s)"); + long size; + if (!curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &size)) { + totalUpload += size; + } + if (!curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &size)) { + totalDownload += size; + } totalDownload += entry->buffer.size(); - if (req.onReject) { - req.onReject({response, {}, std::move(entry->buffer)}); + if (entry->request.onResponse) { + entry->request.onResponse({ + response, + std::move(headers), + std::move(entry->buffer), + }); } } } diff --git a/src/network/commons.hpp b/src/network/commons.hpp index 15fe69850..cd98fbe00 100644 --- a/src/network/commons.hpp +++ b/src/network/commons.hpp @@ -13,7 +13,6 @@ namespace network { struct HttpResponse; using OnResponse = std::function; - using OnReject = std::function; using ConnectCallback = std::function; using ConnectErrorCallback = std::function; using ServerDatagramCallback = std::function; @@ -26,7 +25,6 @@ namespace network { std::vector headers; OnResponse onResponse; - OnReject onReject; bool followLocation = false; bool verifySSL = true; long maxSize = -1;