diff --git a/src/Utilities/AliasVault.FaviconExtractor/FaviconExtractor.cs b/src/Utilities/AliasVault.FaviconExtractor/FaviconExtractor.cs index b6ec42993..e29274ced 100644 --- a/src/Utilities/AliasVault.FaviconExtractor/FaviconExtractor.cs +++ b/src/Utilities/AliasVault.FaviconExtractor/FaviconExtractor.cs @@ -40,14 +40,14 @@ public static class FaviconExtractor using HttpClient client = CreateHttpClient(); - HttpResponseMessage response = await client.GetAsync(uri); - if (!response.IsSuccessStatusCode) + // First attempt + var result = await TryGetFaviconAsync(client, uri); + if (result != null) { - return null; + return result; } - var faviconNodes = await GetFaviconNodesFromHtml(response, uri); - return await TryExtractFaviconFromNodes(faviconNodes, client, uri); + return await TryGetFaviconAsync(client, uri); } /// @@ -127,6 +127,18 @@ public static class FaviconExtractor ]; } + private static async Task TryGetFaviconAsync(HttpClient client, Uri uri) + { + HttpResponseMessage response = await client.GetAsync(uri); + if (!response.IsSuccessStatusCode) + { + return null; + } + + var faviconNodes = await GetFaviconNodesFromHtml(response, uri); + return await TryExtractFaviconFromNodes(faviconNodes, client, uri); + } + private static async Task TryExtractFaviconFromNodes(HtmlNodeCollection[] faviconNodes, HttpClient client, Uri baseUri) { foreach (var nodeCollection in faviconNodes)