MCPcopy
hub / github.com/valyala/fasthttp / resolveTCPAddrs

Function resolveTCPAddrs

tcpdialer.go:512–550  ·  view source on GitHub ↗
(addr string, dualStack bool, resolver Resolver, deadline time.Time)

Source from the content-addressed store, hash-verified

510}
511
512func resolveTCPAddrs(addr string, dualStack bool, resolver Resolver, deadline time.Time) ([]net.TCPAddr, error) {
513 host, portS, err := net.SplitHostPort(addr)
514 if err != nil {
515 return nil, err
516 }
517 port, err := strconv.Atoi(portS)
518 if err != nil {
519 return nil, err
520 }
521
522 if resolver == nil {
523 resolver = net.DefaultResolver
524 }
525
526 ctx, cancel := context.WithDeadline(context.Background(), deadline)
527 defer cancel()
528 ipaddrs, err := resolver.LookupIPAddr(ctx, host)
529 if err != nil {
530 return nil, err
531 }
532
533 n := len(ipaddrs)
534 addrs := make([]net.TCPAddr, 0, n)
535 for i := range n {
536 ip := ipaddrs[i]
537 if !dualStack && ip.IP.To4() == nil {
538 continue
539 }
540 addrs = append(addrs, net.TCPAddr{
541 IP: ip.IP,
542 Port: port,
543 Zone: ip.Zone,
544 })
545 }
546 if len(addrs) == 0 {
547 return nil, errNoDNSEntries
548 }
549 return addrs, nil
550}
551
552var errNoDNSEntries = errors.New("couldn't find DNS entries for the given domain. Try using DialDualStack")

Callers 1

getTCPAddrsMethod · 0.85

Calls 1

LookupIPAddrMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…