diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-01-13 22:14:59 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-13 22:14:59 -0500 |
commit | 3c1a0ad19e7b044bb40f979ec4c5f81bf39dec4b (patch) | |
tree | b19ed1c0c1a15e084a8fd479b32fd0567aee19d3 /src/ops.rs | |
parent | 9e9550ceeaa4d0751e8d1cb79acb962f1b8682d5 (diff) |
Properly parse network addresses. (#1515)
Diffstat (limited to 'src/ops.rs')
-rw-r--r-- | src/ops.rs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/ops.rs b/src/ops.rs index 07170da94..3db380e2e 100644 --- a/src/ops.rs +++ b/src/ops.rs @@ -10,6 +10,7 @@ use isolate::Op; use libdeno; use msg; use msg_util; +use resolve_addr::resolve_addr; use resources; use resources::Resource; use version; @@ -28,7 +29,7 @@ use resources::table_entries; use std; use std::convert::From; use std::fs; -use std::net::{Shutdown, SocketAddr}; +use std::net::Shutdown; #[cfg(unix)] use std::os::unix::fs::PermissionsExt; #[cfg(unix)] @@ -36,7 +37,6 @@ use std::os::unix::process::ExitStatusExt; use std::path::Path; use std::path::PathBuf; use std::process::Command; -use std::str::FromStr; use std::sync::Arc; use std::time::UNIX_EPOCH; use std::time::{Duration, Instant}; @@ -1241,8 +1241,7 @@ fn op_listen( // https://github.com/rust-lang-nursery/rust-clippy/issues/1684 #[cfg_attr(feature = "cargo-clippy", allow(redundant_closure_call))] Box::new(futures::future::result((move || { - // TODO properly parse addr - let addr = SocketAddr::from_str(address).unwrap(); + let addr = resolve_addr(address).wait()?; let listener = TcpListener::bind(&addr)?; let resource = resources::add_tcp_listener(listener); @@ -1325,15 +1324,17 @@ fn op_dial( let cmd_id = base.cmd_id(); let inner = base.inner_as_dial().unwrap(); let network = inner.network().unwrap(); - assert_eq!(network, "tcp"); + assert_eq!(network, "tcp"); // TODO Support others. let address = inner.address().unwrap(); - // TODO properly parse addr - let addr = SocketAddr::from_str(address).unwrap(); - - let op = TcpStream::connect(&addr) - .map_err(|err| err.into()) - .and_then(move |tcp_stream| new_conn(cmd_id, tcp_stream)); + let op = + resolve_addr(address) + .map_err(DenoError::from) + .and_then(move |addr| { + TcpStream::connect(&addr) + .map_err(DenoError::from) + .and_then(move |tcp_stream| new_conn(cmd_id, tcp_stream)) + }); Box::new(op) } |