summaryrefslogtreecommitdiff
path: root/runtime/ops/net.rs
diff options
context:
space:
mode:
authorYusuke Tanaka <yusuktan@maguro.dev>2020-12-15 21:02:26 +0900
committerGitHub <noreply@github.com>2020-12-15 07:02:26 -0500
commit6356345365e766d984f591506fb475d7935685de (patch)
tree580c8fbcc2542ca63fbe20af7fa74e67b05dad1b /runtime/ops/net.rs
parent7a9766dd18cc85053c984cb991dc3debac92530c (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.rs7
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 {