HttpWebClient: Attempt to fix "Too many open files" in unix environments

This commit is contained in:
kaso17
2017-02-20 19:39:16 +01:00
parent b294645e6f
commit 7a9fa6684e

View File

@@ -27,7 +27,7 @@ namespace Jackett.Utils.Clients
{
if (Startup.IgnoreSslErrors == true)
{
logger.Info(string.Format("WindowsWebClient: Disabling certificate validation"));
logger.Info(string.Format("HttpWebClient: Disabling certificate validation"));
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return true; };
}
}
@@ -60,8 +60,9 @@ namespace Jackett.Utils.Clients
useProxy = true;
}
ClearanceHandler clearanceHandlr = new ClearanceHandler();
HttpClientHandler clientHandlr = new HttpClientHandler
using (ClearanceHandler clearanceHandlr = new ClearanceHandler())
{
using (HttpClientHandler clientHandlr = new HttpClientHandler
{
CookieContainer = cookies,
AllowAutoRedirect = false, // Do not use this - Bugs ahoy! Lost cookies and more.
@@ -69,18 +70,20 @@ namespace Jackett.Utils.Clients
Proxy = proxyServer,
UseProxy = useProxy,
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
})
{
clearanceHandlr.InnerHandler = clientHandlr;
var client = new HttpClient(clearanceHandlr);
using (var client = new HttpClient(clearanceHandlr))
{
if (webRequest.EmulateBrowser)
client.DefaultRequestHeaders.Add("User-Agent", BrowserUtil.ChromeUserAgent);
else
client.DefaultRequestHeaders.Add("User-Agent", "Jackett/" + configService.GetVersion());
HttpResponseMessage response = null;
var request = new HttpRequestMessage();
using (var request = new HttpRequestMessage())
{
request.Headers.ExpectContinue = false;
request.RequestUri = new Uri(webRequest.Url);
@@ -100,7 +103,7 @@ namespace Jackett.Utils.Clients
if (!string.IsNullOrEmpty(webRequest.RawBody))
{
var type = webRequest.Headers.Where(h => h.Key == "Content-Type").Cast<KeyValuePair<string,string>?>().FirstOrDefault();
var type = webRequest.Headers.Where(h => h.Key == "Content-Type").Cast<KeyValuePair<string, string>?>().FirstOrDefault();
if (type.HasValue)
{
var str = new StringContent(webRequest.RawBody);
@@ -122,8 +125,8 @@ namespace Jackett.Utils.Clients
request.Method = HttpMethod.Get;
}
response = await client.SendAsync(request);
using (response = await client.SendAsync(request))
{
var result = new WebClientByteResult();
result.Content = await response.Content.ReadAsByteArrayAsync();
@@ -195,4 +198,9 @@ namespace Jackett.Utils.Clients
return result;
}
}
}
}
}
}
}
}