|
|
@ -60,6 +60,9 @@ namespace Jellyfin.Networking.HappyEyeballs
|
|
|
|
using var cancelIPv6 = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
|
|
|
|
using var cancelIPv6 = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
|
|
|
|
var tryConnectAsyncIPv6 = AttemptConnection(AddressFamily.InterNetworkV6, context, cancelIPv6.Token);
|
|
|
|
var tryConnectAsyncIPv6 = AttemptConnection(AddressFamily.InterNetworkV6, context, cancelIPv6.Token);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//This connect task uses GetAwaiter().GetResult() as the appropriate task has already been completed.
|
|
|
|
|
|
|
|
//This results in improved exception handling.
|
|
|
|
|
|
|
|
//See https://github.com/dotnet/corefx/pull/29792/files#r189415885 for more details.
|
|
|
|
if (await Task.WhenAny(tryConnectAsyncIPv6, Task.Delay(200, cancelIPv6.Token)).ConfigureAwait(false) == tryConnectAsyncIPv6 && tryConnectAsyncIPv6.IsCompletedSuccessfully)
|
|
|
|
if (await Task.WhenAny(tryConnectAsyncIPv6, Task.Delay(200, cancelIPv6.Token)).ConfigureAwait(false) == tryConnectAsyncIPv6 && tryConnectAsyncIPv6.IsCompletedSuccessfully)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
cancelIPv6.Cancel();
|
|
|
|
cancelIPv6.Cancel();
|
|
|
@ -71,7 +74,6 @@ namespace Jellyfin.Networking.HappyEyeballs
|
|
|
|
|
|
|
|
|
|
|
|
//Both connect tasks use GetAwaiter().GetResult() as the appropriate task has already been completed.
|
|
|
|
//Both connect tasks use GetAwaiter().GetResult() as the appropriate task has already been completed.
|
|
|
|
//This results in improved exception handling.
|
|
|
|
//This results in improved exception handling.
|
|
|
|
//See https://github.com/dotnet/corefx/pull/29792/files#r189415885 for more details.
|
|
|
|
|
|
|
|
if (await Task.WhenAny(tryConnectAsyncIPv6, tryConnectAsyncIPv4).ConfigureAwait(false) == tryConnectAsyncIPv6)
|
|
|
|
if (await Task.WhenAny(tryConnectAsyncIPv6, tryConnectAsyncIPv4).ConfigureAwait(false) == tryConnectAsyncIPv6)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (tryConnectAsyncIPv6.IsCompletedSuccessfully)
|
|
|
|
if (tryConnectAsyncIPv6.IsCompletedSuccessfully)
|
|
|
|