diff options
author | Yusuke Tanaka <yusuktan@maguro.dev> | 2020-12-15 21:02:26 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-15 07:02:26 -0500 |
commit | 6356345365e766d984f591506fb475d7935685de (patch) | |
tree | 580c8fbcc2542ca63fbe20af7fa74e67b05dad1b /runtime/ops/net.rs | |
parent | 7a9766dd18cc85053c984cb991dc3debac92530c (diff) |
fix: make DNS resolution async (#8743)
This commit adds a new function that is an asynchronous version of
`resolve_addr` using `tokio::net::lookup_host`, and accordingly, renames
the synchronous version to `resolve_addr_sync`.
This allows async ops to resolve hosts with non-blocking.
Diffstat (limited to 'runtime/ops/net.rs')
-rw-r--r-- | runtime/ops/net.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/runtime/ops/net.rs b/runtime/ops/net.rs index 98ff83fc0..8770ef103 100644 --- a/runtime/ops/net.rs +++ b/runtime/ops/net.rs @@ -4,6 +4,7 @@ use crate::ops::io::StreamResource; use crate::ops::io::StreamResourceHolder; use crate::permissions::Permissions; use crate::resolve_addr::resolve_addr; +use crate::resolve_addr::resolve_addr_sync; use deno_core::error::bad_resource; use deno_core::error::bad_resource_id; use deno_core::error::custom_error; @@ -205,7 +206,7 @@ async fn op_datagram_send( s.borrow::<Permissions>() .check_net(&args.hostname, args.port)?; } - let addr = resolve_addr(&args.hostname, args.port)?; + let addr = resolve_addr(&args.hostname, args.port).await?; poll_fn(move |cx| { let mut state = state.borrow_mut(); let resource = state @@ -272,7 +273,7 @@ async fn op_connect( .borrow::<Permissions>() .check_net(&args.hostname, args.port)?; } - let addr = resolve_addr(&args.hostname, args.port)?; + let addr = resolve_addr(&args.hostname, args.port).await?; let tcp_stream = TcpStream::connect(&addr).await?; let local_addr = tcp_stream.local_addr()?; let remote_addr = tcp_stream.peer_addr()?; @@ -505,7 +506,7 @@ fn op_listen( } permissions.check_net(&args.hostname, args.port)?; } - let addr = resolve_addr(&args.hostname, args.port)?; + let addr = resolve_addr_sync(&args.hostname, args.port)?; let (rid, local_addr) = if transport == "tcp" { listen_tcp(state, addr)? } else { |