I am not 100% certain but the build statement at the top of the Unix dns client specified Darwin. I would read the Go issues I linked to in the code snippet.
> On Feb 23, 2021, at 8:29 AM, Peng Yu <pengyu...@gmail.com> wrote: > > Hi Robert, > > Ian Lance Taylor said the exact opposite. "On Darwin I believe that by > default we pass DNS lookups to the C > library." (I assume "we" means Go developers.) > > Are you correct or Ian is correct? > >> On Tue, Feb 23, 2021 at 8:14 AM Robert Engels <reng...@ix.netcom.com> wrote: >> >> As I pointed out, Go does not use the C library. >> >>>> On Feb 23, 2021, at 7:57 AM, Peng Yu <pengyu...@gmail.com> wrote: >>> >>> This does not answer the question why net.Dial can not be made with >>> the same behavior as ping on MacOSX. If the C library behaves >>> differently on MacOSX and Linux, then the C library should not be >>> relied on in this case. I just want to use /etc/hosts but not >>> resolve.conf. >>> >>>> On 2/22/21, robert engels <reng...@ix.netcom.com> wrote: >>>> 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>. >>>> >>>> >>> >>> >>> -- >>> 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. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/CABrM6wkmMj7GgAckj6%3DcHZqd0vxnH0735%2BAc4n7zV%3D%3DBhD4Z8Q%40mail.gmail.com. >> > > > -- > 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/2F90B65B-2427-4D96-BFEE-9DFA40716D6C%40ix.netcom.com.