diff --git a/frontend/src/Components/Form/FormInputGroup.js b/frontend/src/Components/Form/FormInputGroup.js
index 393a6b0ba..7fc3ffd99 100644
--- a/frontend/src/Components/Form/FormInputGroup.js
+++ b/frontend/src/Components/Form/FormInputGroup.js
@@ -210,7 +210,7 @@ function FormInputGroup(props) {
key={index}
text={error.message}
link={error.link}
- linkTooltip={error.detailedMessage}
+ tooltip={error.detailedMessage}
isError={true}
isCheckInput={checkInput}
/>
@@ -225,7 +225,7 @@ function FormInputGroup(props) {
key={index}
text={warning.message}
link={warning.link}
- linkTooltip={warning.detailedMessage}
+ tooltip={warning.detailedMessage}
isWarning={true}
isCheckInput={checkInput}
/>
diff --git a/frontend/src/Components/Form/FormInputHelpText.css b/frontend/src/Components/Form/FormInputHelpText.css
index 7fd957233..756fd90db 100644
--- a/frontend/src/Components/Form/FormInputHelpText.css
+++ b/frontend/src/Components/Form/FormInputHelpText.css
@@ -37,3 +37,7 @@
margin-left: 5px;
}
+
+.details {
+ margin-left: 5px;
+}
diff --git a/frontend/src/Components/Form/FormInputHelpText.js b/frontend/src/Components/Form/FormInputHelpText.js
index d9195568b..404bd8a03 100644
--- a/frontend/src/Components/Form/FormInputHelpText.js
+++ b/frontend/src/Components/Form/FormInputHelpText.js
@@ -11,7 +11,7 @@ function FormInputHelpText(props) {
className,
text,
link,
- linkTooltip,
+ tooltip,
isError,
isWarning,
isCheckInput
@@ -28,16 +28,27 @@ function FormInputHelpText(props) {
{text}
{
- !!link &&
+ link ?
-
+ :
+ null
+ }
+
+ {
+ !link && tooltip ?
+ :
+ null
}
);
@@ -47,7 +58,7 @@ FormInputHelpText.propTypes = {
className: PropTypes.string.isRequired,
text: PropTypes.string.isRequired,
link: PropTypes.string,
- linkTooltip: PropTypes.string,
+ tooltip: PropTypes.string,
isError: PropTypes.bool,
isWarning: PropTypes.bool,
isCheckInput: PropTypes.bool
diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
index d5a7d2cbb..fb76d2731 100644
--- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
+++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
@@ -376,7 +376,10 @@ private ValidationFailure TestConnectionAndVersion()
catch (Exception ex)
{
_logger.Error(ex, ex.Message);
- return new ValidationFailure("Host", "Unable to connect to SABnzbd");
+ return new NzbDroneValidationFailure("Host", "Unable to connect to SABnzbd")
+ {
+ DetailedDescription = ex.Message
+ };
}
}
diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs
index 0f5234727..53a1b9979 100644
--- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs
+++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs
@@ -185,11 +185,16 @@ private string ProcessRequest(HttpRequestBuilder requestBuilder, SabnzbdSettings
}
catch (HttpException ex)
{
- throw new DownloadClientException("Unable to connect to SABnzbd, please check your settings", ex);
+ throw new DownloadClientException("Unable to connect to SABnzbd, {0}", ex, ex.Message);
}
catch (WebException ex)
{
- throw new DownloadClientUnavailableException("Unable to connect to SABnzbd, please check your settings", ex);
+ if (ex.Status == WebExceptionStatus.TrustFailure)
+ {
+ throw new DownloadClientUnavailableException("Unable to connect to SABnzbd, certificate validation failed.", ex);
+ }
+
+ throw new DownloadClientUnavailableException("Unable to connect to SABnzbd, {0}", ex, ex.Message);
}
CheckForError(response);