1
0
mirror of https://github.com/golang/go synced 2024-11-11 17:41:37 -07:00

net: enable pure Go resolver for wasip1

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>
This commit is contained in:
Chris O'Hara 2023-06-03 11:51:02 +10:00 committed by Gopher Robot
parent 1e97c51536
commit 18e17e2cb1
8 changed files with 18 additions and 14 deletions

View 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

View 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

View 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.

View 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

View 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

View 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

View 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")
}

View 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")
}