Skip to content

Commit

Permalink
Merge pull request #26834 from bdach/2fa-cancel-crash
Browse files Browse the repository at this point in the history
Fix crash when logging out during 2FA email verification
  • Loading branch information
peppy authored Jan 31, 2024
2 parents fbc923b + 000ddc1 commit edab056
Showing 1 changed file with 12 additions and 15 deletions.
27 changes: 12 additions & 15 deletions osu.Game/Online/API/OAuth.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,19 +128,12 @@ private bool ensureAccessToken()
// if we already have a valid access token, let's use it.
if (accessTokenValid) return true;

// we want to ensure only a single authentication update is happening at once.
lock (access_token_retrieval_lock)
{
// re-check if valid, in case another request completed and revalidated our access.
if (accessTokenValid) return true;

// if not, let's try using our refresh token to request a new access token.
if (!string.IsNullOrEmpty(Token.Value?.RefreshToken))
// ReSharper disable once PossibleNullReferenceException
AuthenticateWithRefresh(Token.Value.RefreshToken);
// if not, let's try using our refresh token to request a new access token.
if (!string.IsNullOrEmpty(Token.Value?.RefreshToken))
// ReSharper disable once PossibleNullReferenceException
AuthenticateWithRefresh(Token.Value.RefreshToken);

return accessTokenValid;
}
return accessTokenValid;
}

private bool accessTokenValid => Token.Value?.IsValid ?? false;
Expand All @@ -149,14 +142,18 @@ private bool ensureAccessToken()

internal string RequestAccessToken()
{
if (!ensureAccessToken()) return null;
lock (access_token_retrieval_lock)
{
if (!ensureAccessToken()) return null;

return Token.Value.AccessToken;
return Token.Value.AccessToken;
}
}

internal void Clear()
{
Token.Value = null;
lock (access_token_retrieval_lock)
Token.Value = null;
}

private class AccessTokenRequestRefresh : AccessTokenRequest
Expand Down

0 comments on commit edab056

Please sign in to comment.