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