mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-06-29 01:54:20 +03:00
on server errors, treat account as offline
Signed-off-by: Tayou <git@tayou.org>
(cherry picked from commit 0a3adb7912)
This commit is contained in:
parent
ed239ac6eb
commit
7478c97ccd
5 changed files with 18 additions and 4 deletions
|
|
@ -56,7 +56,7 @@ void LauncherLoginStep::onRequestDone(QByteArray* response)
|
|||
qCDebug(authCredentials()) << *response;
|
||||
if (m_request->error() != QNetworkReply::NoError) {
|
||||
qWarning() << "Reply error:" << m_request->error();
|
||||
if (Net::isApplicationError(m_request->error())) {
|
||||
if (Net::isApplicationError(m_request->error()) && !Net::isServerError(m_request->error())) {
|
||||
emit finished(AccountTaskState::STATE_FAILED_SOFT,
|
||||
tr("Failed to get Minecraft access token: %1").arg(m_request->errorString()));
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ void MinecraftProfileStep::onRequestDone(QByteArray* response)
|
|||
qWarning() << " Response:";
|
||||
qWarning() << QString::fromUtf8(*response);
|
||||
|
||||
if (Net::isApplicationError(m_request->error())) {
|
||||
if (Net::isApplicationError(m_request->error()) && !Net::isServerError(m_request->error())) {
|
||||
emit finished(AccountTaskState::STATE_FAILED_SOFT,
|
||||
tr("Minecraft Java profile acquisition failed: %1").arg(m_request->errorString()));
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ void XboxAuthorizationStep::onRequestDone(QByteArray* response)
|
|||
qCDebug(authCredentials()) << *response;
|
||||
if (m_request->error() != QNetworkReply::NoError) {
|
||||
qWarning() << "Reply error:" << m_request->error();
|
||||
if (Net::isApplicationError(m_request->error())) {
|
||||
if (Net::isApplicationError(m_request->error()) && !Net::isServerError(m_request->error())) {
|
||||
if (processSTSError(*response)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ void XboxUserStep::onRequestDone(QByteArray* response)
|
|||
{
|
||||
if (m_request->error() != QNetworkReply::NoError) {
|
||||
qWarning() << "Reply error:" << m_request->error();
|
||||
if (Net::isApplicationError(m_request->error())) {
|
||||
if (Net::isApplicationError(m_request->error()) && !Net::isServerError(m_request->error())) {
|
||||
emit finished(AccountTaskState::STATE_FAILED_SOFT, tr("Xbox user authentication failed: %1").arg(m_request->errorString()));
|
||||
} else {
|
||||
emit finished(AccountTaskState::STATE_OFFLINE, tr("Xbox user authentication failed: %1").arg(m_request->errorString()));
|
||||
|
|
|
|||
|
|
@ -40,4 +40,18 @@ inline bool isApplicationError(QNetworkReply::NetworkError x)
|
|||
QNetworkReply::UnknownContentError };
|
||||
return errors.contains(x);
|
||||
}
|
||||
|
||||
// 500 class errors, see https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/500
|
||||
// microsoft may send these error codes when services (auth) are down.
|
||||
// We treat this as a reason to launch in offline mode.
|
||||
inline bool isServerError(QNetworkReply::NetworkError x)
|
||||
{
|
||||
static QSet<QNetworkReply::NetworkError> errors = { QNetworkReply::InternalServerError,
|
||||
QNetworkReply::OperationNotImplementedError,
|
||||
QNetworkReply::ServiceUnavailableError, // 503 | seen in logs in 2026
|
||||
//QNetworkReply::GatewayTimeoutError, // 504 | seen in logs in 2024
|
||||
// Qt doesn't have it mapped. Unknown covers it
|
||||
QNetworkReply::UnknownServerError };
|
||||
return errors.contains(x);
|
||||
}
|
||||
} // namespace Net
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue