File tree Expand file tree Collapse file tree 1 file changed +27
-3
lines changed Expand file tree Collapse file tree 1 file changed +27
-3
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ import (
1111 "time"
1212
1313 instancenetwork "internal/wasi/sockets/v0.2.0/instance-network"
14+ ipnamelookup "internal/wasi/sockets/v0.2.0/ip-name-lookup"
1415 "internal/wasi/sockets/v0.2.0/network"
1516)
1617
@@ -78,10 +79,33 @@ func init() {
7879 })
7980}
8081
81- // TODO: use ip-name-lookup
8282func (n * wasip2Netdev ) GetHostByName (name string ) (netip.Addr , error ) {
83- fmt .Println ("wasip2 TODO GetHostByName" ) ///
84- return netip.Addr {}, errors .New ("wasip2 TODO GetHostByName" )
83+ res := ipnamelookup .ResolveAddresses (n .net , name )
84+
85+ if res .IsErr () {
86+ return netip.Addr {}, fmt .Errorf ("failed to resolve address: %s" , res .Err ().String ())
87+ }
88+
89+ stream := res .OK ()
90+ pollable := stream .Subscribe ()
91+
92+ for {
93+ pollable .Block ()
94+ res := stream .ResolveNextAddress ()
95+
96+ if res .IsErr () {
97+ return netip.Addr {}, fmt .Errorf ("failed to get resolved address: %s" , res .Err ().String ())
98+ }
99+
100+ if res .OK ().None () {
101+ return netip.Addr {}, errors .New ("no addresses found" )
102+ }
103+
104+ // TODO: handle IPv6
105+ if addr4 := res .OK ().Some ().IPv4 (); addr4 != nil {
106+ return netip .AddrFrom4 (* addr4 ), nil
107+ }
108+ }
85109}
86110
87111func (n * wasip2Netdev ) Addr () (netip.Addr , error ) {
You can’t perform that action at this time.
0 commit comments