From dfcdf8871c3eb82ca3b979334d880179bcee2d2e Mon Sep 17 00:00:00 2001 From: Marcelo Castagna Date: Wed, 1 Mar 2017 20:45:52 -0300 Subject: [PATCH] Fixed infinite loop. Added default destination test when adding client (#968) removed empty spaces. changed dcaex => ex Changed error message changed error message Wrong message, ups Another message --- .../Proxies/DiskStationProxyBase.cs | 18 ++++++++++++------ .../DownloadStation/TorrentDownloadStation.cs | 19 +++++++++++++++++-- .../DownloadStation/UsenetDownloadStation.cs | 19 +++++++++++++++++-- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs index 7a6538970..edaa2ebf6 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs @@ -49,7 +49,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies { if (retries == 5) { - throw new DownloadClientException("Try to process same request more than 5 times"); + throw new DownloadClientException("Try to process request to {0} with {1} more than 5 times", api, arguments.ToJson().ToString()); } if (!_authenticated && api != DiskStationApi.Info && api != DiskStationApi.DSMInfo) @@ -72,15 +72,21 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies } else { + var msg = $"Failed to {operation}. Reason: {responseContent.Error.GetMessage(api)}"; + _logger.Error(msg); + if (responseContent.Error.SessionError) { _authenticated = false; - return ProcessRequest(api, arguments, settings, operation, method, retries++); - } - - var msg = $"Failed to {operation}. Reason: {responseContent.Error.GetMessage(api)}"; - _logger.Error(msg); + if (responseContent.Error.Code == 105) + { + throw new DownloadClientAuthenticationException(msg); + } + + return ProcessRequest(api, arguments, settings, operation, method, ++retries); + } + throw new DownloadClientException(msg); } } diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs index d3161c428..79d0f042b 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs @@ -282,7 +282,17 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { try { - var downloadDir = GetDownloadDirectory(); + var downloadDir = GetDefaultDir(); + + if (downloadDir == null) + { + return new NzbDroneValidationFailure(nameof(Settings.TvDirectory), "No default destination") + { + DetailedDescription = $"You must login into your Diskstation as {Settings.Username} and manually set it up into DownloadStation settings under BT/HTTP/FTP/NZB -> Location." + }; + } + + downloadDir = GetDownloadDirectory(); if (downloadDir != null) { @@ -295,7 +305,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { return new NzbDroneValidationFailure(fieldName, $"Shared folder does not exist") { - DetailedDescription = $"The DownloadStation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" + DetailedDescription = $"The Diskstation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" }; } @@ -310,6 +320,11 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation return null; } + catch (DownloadClientAuthenticationException ex) // User could not have permission to access to downloadstation + { + _logger.Error(ex); + return new NzbDroneValidationFailure(string.Empty, ex.Message); + } catch (Exception ex) { _logger.Error(ex); diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs index 65b6c0440..3348077d2 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs @@ -195,7 +195,17 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { try { - var downloadDir = GetDownloadDirectory(); + var downloadDir = GetDefaultDir(); + + if (downloadDir == null) + { + return new NzbDroneValidationFailure(nameof(Settings.TvDirectory), "No default destination") + { + DetailedDescription = $"You must login into your Diskstation as {Settings.Username} and manually set it up into DownloadStation settings under BT/HTTP/FTP/NZB -> Location." + }; + } + + downloadDir = GetDownloadDirectory(); if (downloadDir != null) { @@ -208,7 +218,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { return new NzbDroneValidationFailure(fieldName, $"Shared folder does not exist") { - DetailedDescription = $"The DownloadStation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" + DetailedDescription = $"The Diskstation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" }; } @@ -223,6 +233,11 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation return null; } + catch (DownloadClientAuthenticationException ex) // User could not have permission to access to downloadstation + { + _logger.Error(ex); + return new NzbDroneValidationFailure(string.Empty, ex.Message); + } catch (Exception ex) { _logger.Error(ex);