1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 09:42:54 +08:00

Merge pull request #14045 from peppy/avoid-unnecessary-error-deserialisation

Avoid deserialisation JSON request content when error is not present (or not relevant)
This commit is contained in:
Dan Balasescu 2021-07-28 20:58:46 +09:00 committed by GitHub
commit 5144bf8354
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -171,19 +171,24 @@ namespace osu.Game.Online.API
WebRequest?.Abort();
string responseString = WebRequest?.GetResponseString();
if (!string.IsNullOrEmpty(responseString))
// in the case of a cancellation we don't care about whether there's an error in the response.
if (!(e is OperationCanceledException))
{
try
{
// attempt to decode a displayable error string.
var error = JsonConvert.DeserializeObject<DisplayableError>(responseString);
if (error != null)
e = new APIException(error.ErrorMessage, e);
}
catch
string responseString = WebRequest?.GetResponseString();
// naive check whether there's an error in the response to avoid unnecessary JSON deserialisation.
if (!string.IsNullOrEmpty(responseString) && responseString.Contains(@"""error"""))
{
try
{
// attempt to decode a displayable error string.
var error = JsonConvert.DeserializeObject<DisplayableError>(responseString);
if (error != null)
e = new APIException(error.ErrorMessage, e);
}
catch
{
}
}
}