Nice work. > On Feb 23, 2021, at 10:16 AM, Shulhan <m.shul...@gmail.com> wrote: > > >> On 23 Feb 2021, at 12.40, 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? >> > > Looking at the source code, the ping command on macOS use gethostbyname2() > [1][2], while the Go on macOS use C library through getaddrinfo [3][4]. > > According to this comment [5] on bugs.python.org, the getaddrinfo call mdns > library, which means it may prioritise to broadcast through network first > (due to local TLD rule) before consulting the /etc/hosts file. > > That is my guess. Maybe someone who know macOS (or BSD in general) can > confirm this behaviour. > > -- > > [1] > https://opensource.apple.com/source/network_cmds/network_cmds-606.40.2/ping.tproj/ping.c.auto.html > > [2] > https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/gethostbyname.3.html > > [3] https://go.googlesource.com/go/+/go1.16/src/net/cgo_unix.go#161 > > [4] > https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/getaddrinfo.3.html#//apple_ref/doc/man/3/getaddrinfo > > [5] https://bugs.python.org/msg258163 > >> On Mon, Feb 22, 2021 at 11:20 PM Ian Lance Taylor <i...@golang.org> wrote: >>> On Mon, Feb 22, 2021 at 9:11 PM Peng Yu <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> wrote: >>>> On Mon, Feb 22, 2021 at 12:22 PM Peng Yu <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 >>>>> 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, >>>> 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. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/CABrM6w%3D8Orgj3t4MW3%3DMs7L0vy0nFS_EeGjRZ8n%2BTvQOrHAO9g%40mail.gmail.com. > > -- > 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/A0FD8A6A-8159-46C0-AD66-575E2C040AA5%40gmail.com.
-- 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/578BFBEF-4888-4868-8B6C-96172AED7FFC%40ix.netcom.com.