Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetHostEntryOrAddressesCoreAsync()

static Task System.Net.Dns.GetHostEntryOrAddressesCoreAsync ( string hostName,
bool justReturnParsedIp,
bool throwOnIIPAny,
bool justAddresses,
AddressFamily family,
CancellationToken cancellationToken )
inlinestaticprivate

Definition at line 472 of file Dns.cs.

473 {
474 if (hostName == null)
475 {
476 throw new ArgumentNullException("hostName");
477 }
478 if (cancellationToken.IsCancellationRequested)
479 {
480 if (!justAddresses)
481 {
482 return Task.FromCanceled<IPHostEntry>(cancellationToken);
483 }
484 return Task.FromCanceled<IPAddress[]>(cancellationToken);
485 }
486 object key;
487 if (IPAddress.TryParse(hostName, out IPAddress address))
488 {
489 if (throwOnIIPAny && (address.Equals(IPAddress.Any) || address.Equals(IPAddress.IPv6Any)))
490 {
491 if (System.Net.NetEventSource.Log.IsEnabled())
492 {
493 System.Net.NetEventSource.Error(hostName, $"Invalid address '{address}'", "GetHostEntryOrAddressesCoreAsync");
494 }
495 throw new ArgumentException(System.SR.net_invalid_ip_addr, "hostName");
496 }
498 {
499 if (!justAddresses)
500 {
501 return Task.FromResult(CreateHostEntryForAddress(address));
502 }
503 return Task.FromResult((family != 0 && address.AddressFamily != family) ? Array.Empty<IPAddress>() : new IPAddress[1] { address });
504 }
505 key = ((family == AddressFamily.Unspecified) ? address : ((object)new KeyValuePair<IPAddress, AddressFamily>(address, family)));
506 }
507 else
508 {
509 if (NameResolutionPal.SupportsGetAddrInfoAsync)
510 {
511 ValidateHostName(hostName);
512 Task task = ((!NameResolutionTelemetry.Log.IsEnabled()) ? NameResolutionPal.GetAddrInfoAsync(hostName, justAddresses, family, cancellationToken) : (justAddresses ? ((Task)GetAddrInfoWithTelemetryAsync<IPAddress[]>(hostName, justAddresses, family, cancellationToken)) : ((Task)GetAddrInfoWithTelemetryAsync<IPHostEntry>(hostName, justAddresses, family, cancellationToken))));
513 if (task != null)
514 {
515 return task;
516 }
517 }
518 key = ((family == AddressFamily.Unspecified) ? hostName : ((object)new KeyValuePair<string, AddressFamily>(hostName, family)));
519 }
520 if (justAddresses)
521 {
523 {
524 if (s is string hostName3)
525 {
527 }
529 {
531 }
532 if (s is IPAddress address3)
533 {
535 }
538 }
540 {
541 if (s is string hostName2)
542 {
544 }
546 {
548 }
549 if (s is IPAddress address2)
550 {
551 return GetHostEntryCore(address2, AddressFamily.Unspecified, stopwatch);
552 }
555 }
static void ValidateHostName(string hostName)
Definition Dns.cs:591
static IPHostEntry CreateHostEntryForAddress(IPAddress address)
Definition Dns.cs:582
static IPHostEntry GetHostEntryCore(string hostName, AddressFamily addressFamily, ValueStopwatch stopwatch=default(ValueStopwatch))
Definition Dns.cs:357
static IPAddress[] GetHostAddressesCore(string hostName, AddressFamily addressFamily, ValueStopwatch stopwatch=default(ValueStopwatch))
Definition Dns.cs:362
static readonly System.Net.NetEventSource Log
static void Error(object thisOrContextObject, FormattableString formattableString, [CallerMemberName] string memberName=null)
static string net_invalid_ip_addr
Definition SR.cs:16
Definition SR.cs:7
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363

References System.Net.IPAddress.Any, System.cancellationToken, System.Net.Dns.CreateHostEntryForAddress(), System.Net.NetEventSource.Error(), System.Threading.Tasks.Task< TResult >.FromCanceled(), System.Net.NameResolutionPal.GetAddrInfoAsync(), System.Net.Dns.GetHostAddressesCore(), System.Net.Dns.GetHostEntryCore(), System.Net.IPAddress.IPv6Any, System.key, System.Net.NetEventSource.Log, System.Net.NameResolutionTelemetry.Log, System.SR.net_invalid_ip_addr, System.s, System.Net.NameResolutionPal.SupportsGetAddrInfoAsync, System.task, System.Net.IPAddress.TryParse(), and System.Net.Dns.ValidateHostName().

Referenced by System.Net.Dns.GetHostAddressesAsync(), System.Net.Dns.GetHostAddressesAsync(), System.Net.Dns.GetHostAddressesAsync(), and System.Net.Dns.GetHostEntryCoreAsync().