Skip to content

Commit

Permalink
net: enable pure Go resolver for wasip1
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
Run-TryBot: Ian Lance Taylor <[email protected]>
TryBot-Result: Gopher Robot <[email protected]>
Reviewed-by: Randy Reddig <[email protected]>
Reviewed-by: Johan Brandhorst-Satzkorn <[email protected]>
Reviewed-by: Dmitri Shuralyov <[email protected]>
  • Loading branch information
chriso authored and gopherbot committed Jun 29, 2023
1 parent 1e97c51 commit 18e17e2
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 14 deletions.
5 changes: 3 additions & 2 deletions src/net/cgo_stub.go
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/net/conf.go
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/net/dnsclient_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion src/net/dnsconfig_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/net/lookup_fake.go
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/net/lookup_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
6 changes: 0 additions & 6 deletions src/net/net_fake.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ import (
"sync"
"syscall"
"time"

"golang.org/x/net/dns/dnsmessage"
)

var listenersMu sync.Mutex
Expand Down Expand Up @@ -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")
}
11 changes: 10 additions & 1 deletion src/net/net_fake_js.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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")
}

0 comments on commit 18e17e2

Please sign in to comment.