From 812b505d3461ee8a22f85f8554078fd9a47f797b Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 18 Mar 2023 13:38:32 +0530 Subject: [PATCH] WebServiceAppsApi: using HttpClientNetworkHandler for retries and custom DNS resolution support. --- DnsServerCore/WebServiceAppsApi.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/DnsServerCore/WebServiceAppsApi.cs b/DnsServerCore/WebServiceAppsApi.cs index 1a3a37c3..facafb2a 100644 --- a/DnsServerCore/WebServiceAppsApi.cs +++ b/DnsServerCore/WebServiceAppsApi.cs @@ -173,7 +173,12 @@ namespace DnsServerCore handler.UseProxy = _dnsWebService.DnsServer.Proxy is not null; handler.AutomaticDecompression = DecompressionMethods.All; - using (HttpClient http = new HttpClient(doRetry ? new HttpClientRetryHandler(handler) : handler)) + HttpClientNetworkHandler networkHandler = new HttpClientNetworkHandler(handler, _dnsWebService.DnsServer.PreferIPv6 ? HttpClientNetworkType.PreferIPv6 : HttpClientNetworkType.Default, _dnsWebService.DnsServer); + + if (!doRetry) + networkHandler.Retries = 1; + + using (HttpClient http = new HttpClient(networkHandler)) { _storeAppsJsonData = await http.GetStringAsync(_appStoreUri); _storeAppsJsonDataUpdatedOn = DateTime.UtcNow; @@ -196,7 +201,12 @@ namespace DnsServerCore handler.UseProxy = _dnsWebService.DnsServer.Proxy is not null; handler.AutomaticDecompression = DecompressionMethods.All; - using (HttpClient http = new HttpClient(doRetry ? new HttpClientRetryHandler(handler) : handler)) + HttpClientNetworkHandler networkHandler = new HttpClientNetworkHandler(handler, _dnsWebService.DnsServer.PreferIPv6 ? HttpClientNetworkType.PreferIPv6 : HttpClientNetworkType.Default, _dnsWebService.DnsServer); + + if (!doRetry) + networkHandler.Retries = 1; + + using (HttpClient http = new HttpClient(networkHandler)) { using (Stream httpStream = await http.GetStreamAsync(url)) { @@ -461,7 +471,7 @@ namespace DnsServerCore handler.UseProxy = _dnsWebService.DnsServer.Proxy is not null; handler.AutomaticDecompression = DecompressionMethods.All; - using (HttpClient http = new HttpClient(handler)) + using (HttpClient http = new HttpClient(new HttpClientNetworkHandler(handler, _dnsWebService.DnsServer.PreferIPv6 ? HttpClientNetworkType.PreferIPv6 : HttpClientNetworkType.Default, _dnsWebService.DnsServer))) { using (Stream httpStream = await http.GetStreamAsync(url)) {