network异常

This commit is contained in:
老九 2021-11-26 22:21:58 +08:00
parent f5e7e4c0d0
commit 59fde288b5

View File

@ -24,8 +24,8 @@ namespace FastGithub.DomainResolve
private readonly IMemoryCache domainAddressCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); private readonly IMemoryCache domainAddressCache = new MemoryCache(Options.Create(new MemoryCacheOptions()));
private record AddressElapsed(IPAddress Address, TimeSpan Elapsed); private record AddressElapsed(IPAddress Address, TimeSpan Elapsed);
private readonly TimeSpan brokeElapsedExpiration = TimeSpan.FromMinutes(1d); private readonly TimeSpan problemElapsedExpiration = TimeSpan.FromMinutes(1d);
private readonly TimeSpan normaleElapsedExpiration = TimeSpan.FromMinutes(5d); private readonly TimeSpan normalElapsedExpiration = TimeSpan.FromMinutes(5d);
private readonly TimeSpan connectTimeout = TimeSpan.FromSeconds(5d); private readonly TimeSpan connectTimeout = TimeSpan.FromSeconds(5d);
private readonly IMemoryCache addressElapsedCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); private readonly IMemoryCache addressElapsedCache = new MemoryCache(Options.Create(new MemoryCacheOptions()));
@ -107,14 +107,14 @@ namespace FastGithub.DomainResolve
await socket.ConnectAsync(endPoint, linkedTokenSource.Token); await socket.ConnectAsync(endPoint, linkedTokenSource.Token);
addressElapsed = new AddressElapsed(endPoint.Address, stopWatch.Elapsed); addressElapsed = new AddressElapsed(endPoint.Address, stopWatch.Elapsed);
return this.addressElapsedCache.Set(endPoint, addressElapsed, this.normaleElapsedExpiration); return this.addressElapsedCache.Set(endPoint, addressElapsed, this.normalElapsedExpiration);
} }
catch (Exception ex) catch (Exception ex)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
addressElapsed = new AddressElapsed(endPoint.Address, TimeSpan.MaxValue); addressElapsed = new AddressElapsed(endPoint.Address, TimeSpan.MaxValue);
var expiration = IsLocalNetworkProblem(ex) ? this.brokeElapsedExpiration : this.normaleElapsedExpiration; var expiration = IsLocalNetworkProblem(ex) ? this.problemElapsedExpiration : this.normalElapsedExpiration;
return this.addressElapsedCache.Set(endPoint, addressElapsed, expiration); return this.addressElapsedCache.Set(endPoint, addressElapsed, expiration);
} }
finally finally
@ -136,9 +136,7 @@ namespace FastGithub.DomainResolve
} }
var code = socketException.SocketErrorCode; var code = socketException.SocketErrorCode;
return code == SocketError.NetworkDown || return code == SocketError.NetworkDown || code == SocketError.NetworkUnreachable;
code == SocketError.NetworkUnreachable ||
code == SocketError.HostUnreachable;
} }
} }
} }