Compare commits

...

1 Commits

Author SHA1 Message Date
Ian Chua
3ad2f82ff9 fix: set a grace period for 401 api calls 2026-05-21 20:12:08 +08:00
2 changed files with 19 additions and 9 deletions

View File

@@ -4846,6 +4846,7 @@ void GUI_App::on_http_error(wxCommandEvent &evt)
if (status == 401) {
if (m_agent) {
if (m_agent->is_user_login(provider)) {
if (std::chrono::steady_clock::now() - m_last_401_error_time > 30s) {
BOOST_LOG_TRIVIAL(warning) << "logout: http error 401.";
this->request_user_logout(provider);
@@ -4858,6 +4859,10 @@ void GUI_App::on_http_error(wxCommandEvent &evt)
return;
}
}
} else {
BOOST_LOG_TRIVIAL(warning) << "401 encountered within grace period, suppressing logout";
}
m_last_401_error_time = std::chrono::steady_clock::now();
}
}
return;
@@ -4931,6 +4936,10 @@ void GUI_App::on_user_login_handle(wxCommandEvent &evt)
std::string provider = evt.GetString().ToStdString();
if (provider.empty()) provider = ORCA_CLOUD_PROVIDER;
// Reset 401 grace period so transient token-propagation 401s
// during login warmup don't trigger immediate logout.
m_last_401_error_time = std::chrono::steady_clock::now();
m_agent->connect_server();
// get machine list
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();

View File

@@ -326,6 +326,7 @@ private:
bool m_adding_script_handler { false };
bool m_side_popup_status{false};
bool m_show_http_error_msgdlg{false};
std::chrono::steady_clock::time_point m_last_401_error_time;
bool m_show_error_msgdlg{false};
wxString m_info_dialog_content;
HttpServer m_http_server;