diff --git a/src/Jackett.Common/Indexers/FileList.cs b/src/Jackett.Common/Indexers/FileList.cs index 2e81936dd..251efc808 100644 --- a/src/Jackett.Common/Indexers/FileList.cs +++ b/src/Jackett.Common/Indexers/FileList.cs @@ -144,11 +144,9 @@ namespace Jackett.Common.Indexers throw new TooManyRequestsException("Rate limited", indexerResponse); } - if (response.StartsWith("{\"error\"")) + if (response.StartsWith("{\"error\"") && STJson.TryDeserialize(response, out var errorResponse)) { - var error = STJson.Deserialize(response).Error; - - throw new ExceptionWithConfigData(error, configData); + throw new ExceptionWithConfigData(errorResponse.Error, configData); } if (indexerResponse.Status != HttpStatusCode.OK) diff --git a/src/Jackett.Common/Serializer/STJson.cs b/src/Jackett.Common/Serializer/STJson.cs index 59f89d76b..e87acaf9f 100644 --- a/src/Jackett.Common/Serializer/STJson.cs +++ b/src/Jackett.Common/Serializer/STJson.cs @@ -32,5 +32,20 @@ namespace Jackett.Common.Serializer { return JsonSerializer.Deserialize(json, _SerializerSettings); } + + public static bool TryDeserialize(string json, out T result) + where T : new() + { + try + { + result = Deserialize(json); + return true; + } + catch (JsonException) + { + result = default(T); + return false; + } + } } }