]> Cypherpunks repositories - gostls13.git/commitdiff
net: enable pure Go resolver for wasip1
authorChris O'Hara <cohara87@gmail.com>
Sat, 3 Jun 2023 01:51:02 +0000 (11:51 +1000)
committerGopher Robot <gobot@golang.org>
Thu, 29 Jun 2023 23:06:46 +0000 (23:06 +0000)
Top-level functions in the net package that only read files,
for example LookupPort(...), or LookupIP(host) where host resides
in /etc/hosts, now work on wasip1.

If the application has the ability to create sockets (for example,
when using a sockets extension to WASI preview 1), it's now
possible to do name resolution by passing a custom Dial function
to a Resolver instance.

Change-Id: I923886f67e336820bc89f09ea1855387c8dac61a
Reviewed-on: https://go-review.googlesource.com/c/go/+/500579
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Randy Reddig <ydnar@shaderlab.com>
Reviewed-by: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/net/cgo_stub.go
src/net/conf.go
src/net/dnsclient_unix.go
src/net/dnsconfig_unix.go
src/net/lookup_fake.go
src/net/lookup_unix.go
src/net/net_fake.go
src/net/net_fake_js.go

index bd483110b570919c76b8a4bb3f1afe55c2bae7ae..a8514c19f8faee32749cbdac343eae95352e137b 100644 (file)
@@ -4,11 +4,12 @@
 
 // This file holds stub versions of the cgo functions called on Unix systems.
 // We build this file if using the netgo build tag, or if cgo is not
-// enabled and we are using a Unix system other than Darwin.
+// enabled and we are using a Unix system other than Darwin, or if it's
+// wasip1 where cgo is never available.
 // Darwin is exempted because it always provides the cgo routines,
 // in cgo_unix_syscall.go.
 
-//go:build netgo || (!cgo && unix && !darwin)
+//go:build netgo || (!cgo && unix && !darwin) || wasip1
 
 package net
 
index 1db166c9e3c2dfbba1bde6b4c0490abe514e66c4..77cc6355928b01dbbd8783df011710f5c10dd8d6 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build !js && !wasip1
+//go:build !js
 
 package net
 
index f3c075c83fd2a080f4c133a8012eedde9db8dfad..dab5144e5d7ae4fb60b0819df5b008c67e68f284 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build !js && !wasip1
+//go:build !js
 
 // DNS client: see RFC 1035.
 // Has to be linked into package net for Dial.
index d5f34e530049038f83ac52ca5fe477093ad2fbe1..69b300410ab0e18e74b2b7e4a2ee682277c54537 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build !js && !wasip1 && !windows
+//go:build !js && !windows
 
 // Read system DNS config from /etc/resolv.conf
 
index 45146e1c959add7916aebbb810cb76f2ecb35059..c27eae4ba5097e11460aae0f40f7206eb3c0a9df 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build (js && wasm) || wasip1
+//go:build js && wasm
 
 package net
 
index dc75e0a3b68e566ac73f1a83e8e4772911743624..56ae11e961b6e050704548ce3e830b2aa131dcff 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build unix
+//go:build unix || wasip1
 
 package net
 
index 68d36966ca2ae46f7ce8e33f278f9f0c864ec5b9..908767a1f6535cab7583e74c833a2b3da0c3d076 100644 (file)
@@ -15,8 +15,6 @@ import (
        "sync"
        "syscall"
        "time"
-
-       "golang.org/x/net/dns/dnsmessage"
 )
 
 var listenersMu sync.Mutex
@@ -406,7 +404,3 @@ func (fd *fakeNetFD) writeMsg(p []byte, oob []byte, sa syscall.Sockaddr) (n int,
 func (fd *fakeNetFD) dup() (f *os.File, err error) {
        return nil, syscall.ENOSYS
 }
-
-func (r *Resolver) lookup(ctx context.Context, name string, qtype dnsmessage.Type, conf *dnsConfig) (dnsmessage.Parser, string, error) {
-       panic("unreachable")
-}
index 1fc0b50b7dfa52cb18359bd4b477039235621fdc..7ba108b664b83ac1d9ea695c6df4efe5394a4f1d 100644 (file)
@@ -8,7 +8,12 @@
 
 package net
 
-import "internal/poll"
+import (
+       "context"
+       "internal/poll"
+
+       "golang.org/x/net/dns/dnsmessage"
+)
 
 // Network file descriptor.
 type netFD struct {
@@ -25,3 +30,7 @@ type netFD struct {
        pfd         poll.FD
        isConnected bool // handshake completed or use of association with peer
 }
+
+func (r *Resolver) lookup(ctx context.Context, name string, qtype dnsmessage.Type, conf *dnsConfig) (dnsmessage.Parser, string, error) {
+       panic("unreachable")
+}