From 5d93f874da1c496bbbb34b259a648ef359243e86 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 29 Jan 2023 02:28:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BC=81=E9=B9=85?= =?UTF-8?q?=E7=89=A9=E6=B5=81=E6=97=A0=E6=B3=95=E4=B8=8A=E4=BC=A0=E6=97=B6?= =?UTF-8?q?=E5=8D=A1=E5=BE=88=E4=B9=85=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/3470 --- src/MaaCore/Task/ReportDataTask.cpp | 37 ++++++++++++----------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/src/MaaCore/Task/ReportDataTask.cpp b/src/MaaCore/Task/ReportDataTask.cpp index 786937d663..f3fa24170b 100644 --- a/src/MaaCore/Task/ReportDataTask.cpp +++ b/src/MaaCore/Task/ReportDataTask.cpp @@ -87,21 +87,22 @@ void asst::ReportDataTask::report_to_penguin() m_extra_param += " -H \"X-Penguin-Idempotency-Key: " + std::move(key) + "\""; int backoff = 10 * 1000; // 10s + + auto penguin_retry_cond = [&](const http::Response& response) -> bool { + if (!response.status_code()) { + return true; + } + if (response.status_5xx()) { + backoff = static_cast(backoff * 1.5); + sleep(backoff); + return true; + } + return false; + }; + http::Response response = report( "ReportToPenguinStats", Config.get_options().penguin_report.cmd_format, - [](const http::Response& response) -> bool { return response.success(); }, - [&](const http::Response& response) -> bool { - if (!response.status_code()) { - return true; - } - if (response.status_5xx()) { - backoff = static_cast(backoff * 1.5); - sleep(backoff); - return true; - } - return false; - }, - false); + [](const http::Response& response) -> bool { return response.success(); }, penguin_retry_cond, false); auto proc_response_id = [&]() { if (auto penguinid_opt = response.find_header("x-penguin-set-penguinid")) [[unlikely]] { @@ -127,15 +128,7 @@ void asst::ReportDataTask::report_to_penguin() backoff = 10 * 1000; // 10s response = report( "ReportToPenguinStats", new_cmd_format, - [](const http::Response& response) -> bool { return response.success(); }, - [&](const http::Response& response) -> bool { - bool cond = !response.status_code() || response.status_5xx(); - if (cond) { - backoff = static_cast(backoff * 1.5); - sleep(backoff); - } - return cond; - }); + [](const http::Response& response) -> bool { return response.success(); }, penguin_retry_cond); if (response.success()) { proc_response_id();