It looks like the Go runtime implements its own DNS client on *unix platforms 
including OSX.

> On Feb 22, 2021, at 11:40 PM, Peng Yu <pengyu...@gmail.com> wrote:
> 
> I don’t understand why ping does not have the same problem. Ping is not based 
> on C library?
> 
> On Mon, Feb 22, 2021 at 11:20 PM Ian Lance Taylor <i...@golang.org 
> <mailto:i...@golang.org>> wrote:
> On Mon, Feb 22, 2021 at 9:11 PM Peng Yu <pengyu...@gmail.com 
> <mailto:pengyu...@gmail.com>> wrote:
> >
> > I tried 1.16.
> >
> > $ go version
> > go version go1.16 darwin/amd64
> >
> > The problem still exists. When I change mymachine.local to
> > mymachine_local, the problem is gone. So somehow, this is related to
> > host resolution? It might try to DNS lookup the hostname, when it can
> > not find it via DNS then it look up in /etc/hosts?
> 
> On Darwin I believe that by default we pass DNS lookups to the C
> library.  So I think that what you are seeing is the behavior of the C
> library.  Try setting the environment variable GODEBUG=netdns=go.
> 
> Ian
> 
> 
> > On 2/22/21, Ian Lance Taylor <i...@golang.org <mailto:i...@golang.org>> 
> > wrote:
> > > On Mon, Feb 22, 2021 at 12:22 PM Peng Yu <pengyu...@gmail.com 
> > > <mailto:pengyu...@gmail.com>> wrote:
> > >>
> > >> I run the following go program using net.Dial(). Depending on whether
> > >> I specify a local hostname (defined in /etc/hosts) or an IP. I get
> > >> very different runtimes.
> > >>
> > >> But `ping mymachine.local` resolves the hostname to an IP address
> > >> instantaneously. So the two calls of the go program should have the
> > >> same runtimes.
> > >>
> > >> Can anybody reproduce the same runtime problem? Does anybody know what
> > >> is wrong with the implementation of net.Dial()? Thanks.
> > >>
> > >> $ ./main mymachine.local:22
> > >> 2021/02/22 14:14:25 before
> > >> 2021/02/22 14:14:30 after
> > >> $ ./main 192.168.1.104:22 <http://192.168.1.104:22/>
> > >> 2021/02/22 14:14:30 before
> > >> 2021/02/22 14:14:30 after
> > >> $ cat main.go
> > >> package main
> > >> import (
> > >>   "net"
> > >>   "log"
> > >>   "os"
> > >> )
> > >>
> > >> func main() {
> > >>   dialAddr := os.Args[1]
> > >>   log.Println("before")
> > >>   _, err := net.Dial("tcp", dialAddr)
> > >>   log.Println("after")
> > >>   if err != nil {
> > >>     log.Fatalln(err)
> > >>   }
> > >> }
> > >
> > > Which version of Go are you using?  What operating system are you running
> > > on?
> > >
> > > It is possible that are running into https://golang.org/issue/35305 
> > > <https://golang.org/issue/35305>,
> > > which is fixed in 1.16.
> > >
> > > Ian
> > >
> >
> >
> > --
> > Regards,
> > Peng
> -- 
> Regards,
> Peng
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com 
> <mailto:golang-nuts+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CABrM6w%3D8Orgj3t4MW3%3DMs7L0vy0nFS_EeGjRZ8n%2BTvQOrHAO9g%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/CABrM6w%3D8Orgj3t4MW3%3DMs7L0vy0nFS_EeGjRZ8n%2BTvQOrHAO9g%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/2E9EE048-6CDF-4B35-85E2-7BFD5F76C500%40ix.netcom.com.

Reply via email to