mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
More mono cleaning
This commit is contained in:
@@ -82,9 +82,6 @@ namespace NzbDrone.Common.Http.Dispatchers
|
|||||||
|
|
||||||
if (httpWebResponse == null)
|
if (httpWebResponse == null)
|
||||||
{
|
{
|
||||||
// Workaround for mono not closing connections properly in certain situations.
|
|
||||||
AbortWebRequest(webRequest);
|
|
||||||
|
|
||||||
// The default messages for WebException on mono are pretty horrible.
|
// The default messages for WebException on mono are pretty horrible.
|
||||||
if (e.Status == WebExceptionStatus.NameResolutionFailure)
|
if (e.Status == WebExceptionStatus.NameResolutionFailure)
|
||||||
{
|
{
|
||||||
@@ -242,36 +239,5 @@ namespace NzbDrone.Common.Http.Dispatchers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround for mono not closing connections properly on timeouts
|
|
||||||
private void AbortWebRequest(HttpWebRequest webRequest)
|
|
||||||
{
|
|
||||||
// First affected version was mono 5.16
|
|
||||||
if (OsInfo.IsNotWindows && _platformInfo.Version >= new Version(5, 16))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var currentOperationInfo = webRequest.GetType().GetField("currentOperation", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
||||||
var currentOperation = currentOperationInfo.GetValue(webRequest);
|
|
||||||
|
|
||||||
if (currentOperation != null)
|
|
||||||
{
|
|
||||||
var responseStreamInfo = currentOperation.GetType().GetField("responseStream", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
||||||
var responseStream = responseStreamInfo.GetValue(currentOperation) as Stream;
|
|
||||||
|
|
||||||
// Note that responseStream will likely be null once mono fixes it.
|
|
||||||
responseStream?.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
// This can fail randomly on future mono versions that have been changed/fixed. Log to sentry and ignore.
|
|
||||||
_logger.Trace()
|
|
||||||
.Exception(ex)
|
|
||||||
.Message("Unable to dispose responseStream on mono {0}", _platformInfo.Version)
|
|
||||||
.Write();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user