diff options
author | Bartek Iwańczuk <biwanczuk@gmail.com> | 2022-10-25 22:50:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 22:50:55 +0200 |
commit | af62e0833dbb23ac0af674b57e5938be97ad57c8 (patch) | |
tree | 025e5004d4a605f945e74ee456cf615c2d7d7352 /ext/net/ops_tls.rs | |
parent | 378e6a8c0369f3256cde8a595d3dbdfe4f1dc2f9 (diff) |
Revert "Revert "refactor(ext/net): clean up variadic network ops (#16… (#16422)
…392)" (#16417)"
This reverts commit 8e3f825c921b38141afa7a69a0664881c5c94461.
Diffstat (limited to 'ext/net/ops_tls.rs')
-rw-r--r-- | ext/net/ops_tls.rs | 99 |
1 files changed, 24 insertions, 75 deletions
diff --git a/ext/net/ops_tls.rs b/ext/net/ops_tls.rs index a59cd747e..b27426894 100644 --- a/ext/net/ops_tls.rs +++ b/ext/net/ops_tls.rs @@ -2,8 +2,6 @@ use crate::io::TcpStreamResource; use crate::ops::IpAddr; -use crate::ops::OpAddr; -use crate::ops::OpConn; use crate::ops::TlsHandshakeInfo; use crate::resolve_addr::resolve_addr; use crate::resolve_addr::resolve_addr_sync; @@ -658,9 +656,9 @@ impl Write for ImplementWriteTrait<'_, TcpStream> { pub fn init<P: NetPermissions + 'static>() -> Vec<OpDecl> { vec![ op_tls_start::decl::<P>(), - op_tls_connect::decl::<P>(), - op_tls_listen::decl::<P>(), - op_tls_accept::decl(), + op_net_connect_tls::decl::<P>(), + op_net_listen_tls::decl::<P>(), + op_net_accept_tls::decl(), op_tls_handshake::decl(), ] } @@ -751,9 +749,6 @@ impl Resource for TlsStreamResource { #[derive(Deserialize)] #[serde(rename_all = "camelCase")] pub struct ConnectTlsArgs { - transport: String, - hostname: String, - port: u16, cert_file: Option<String>, ca_certs: Vec<String>, cert_chain: Option<String>, @@ -774,7 +769,7 @@ pub struct StartTlsArgs { pub async fn op_tls_start<NP>( state: Rc<RefCell<OpState>>, args: StartTlsArgs, -) -> Result<OpConn, AnyError> +) -> Result<(ResourceId, IpAddr, IpAddr), AnyError> where NP: NetPermissions + 'static, { @@ -853,33 +848,18 @@ where .add(TlsStreamResource::new(tls_stream.into_split())) }; - Ok(OpConn { - rid, - local_addr: Some(OpAddr::Tcp(IpAddr { - hostname: local_addr.ip().to_string(), - port: local_addr.port(), - })), - remote_addr: Some(OpAddr::Tcp(IpAddr { - hostname: remote_addr.ip().to_string(), - port: remote_addr.port(), - })), - }) + Ok((rid, IpAddr::from(local_addr), IpAddr::from(remote_addr))) } #[op] -pub async fn op_tls_connect<NP>( +pub async fn op_net_connect_tls<NP>( state: Rc<RefCell<OpState>>, + addr: IpAddr, args: ConnectTlsArgs, -) -> Result<OpConn, AnyError> +) -> Result<(ResourceId, IpAddr, IpAddr), AnyError> where NP: NetPermissions + 'static, { - assert_eq!(args.transport, "tcp"); - let hostname = match &*args.hostname { - "" => "localhost", - n => n, - }; - let port = args.port; let cert_file = args.cert_file.as_deref(); let unsafely_ignore_certificate_errors = state .borrow() @@ -896,7 +876,8 @@ where { let mut s = state.borrow_mut(); let permissions = s.borrow_mut::<NP>(); - permissions.check_net(&(hostname, Some(port)), "Deno.connectTls()")?; + permissions + .check_net(&(&addr.hostname, Some(addr.port)), "Deno.connectTls()")?; if let Some(path) = cert_file { permissions.check_read(Path::new(path), "Deno.connectTls()")?; } @@ -919,10 +900,9 @@ where .borrow::<DefaultTlsOptions>() .root_cert_store .clone(); - let hostname_dns = - ServerName::try_from(hostname).map_err(|_| invalid_hostname(hostname))?; - - let connect_addr = resolve_addr(hostname, port) + let hostname_dns = ServerName::try_from(&*addr.hostname) + .map_err(|_| invalid_hostname(&addr.hostname))?; + let connect_addr = resolve_addr(&addr.hostname, addr.port) .await? .next() .ok_or_else(|| generic_error("No resolved address found"))?; @@ -968,17 +948,7 @@ where .add(TlsStreamResource::new(tls_stream.into_split())) }; - Ok(OpConn { - rid, - local_addr: Some(OpAddr::Tcp(IpAddr { - hostname: local_addr.ip().to_string(), - port: local_addr.port(), - })), - remote_addr: Some(OpAddr::Tcp(IpAddr { - hostname: remote_addr.ip().to_string(), - port: remote_addr.port(), - })), - }) + Ok((rid, IpAddr::from(local_addr), IpAddr::from(remote_addr))) } fn load_certs_from_file(path: &str) -> Result<Vec<Certificate>, AnyError> { @@ -1013,9 +983,6 @@ impl Resource for TlsListenerResource { #[derive(Deserialize)] #[serde(rename_all = "camelCase")] pub struct ListenTlsArgs { - transport: String, - hostname: String, - port: u16, cert: Option<String>, // TODO(kt3k): Remove this option at v2.0. cert_file: Option<String>, @@ -1026,16 +993,14 @@ pub struct ListenTlsArgs { } #[op] -pub fn op_tls_listen<NP>( +pub fn op_net_listen_tls<NP>( state: &mut OpState, + addr: IpAddr, args: ListenTlsArgs, -) -> Result<OpConn, AnyError> +) -> Result<(ResourceId, IpAddr), AnyError> where NP: NetPermissions + 'static, { - assert_eq!(args.transport, "tcp"); - let hostname = &*args.hostname; - let port = args.port; let cert_file = args.cert_file.as_deref(); let key_file = args.key_file.as_deref(); let cert = args.cert.as_deref(); @@ -1043,7 +1008,8 @@ where { let permissions = state.borrow_mut::<NP>(); - permissions.check_net(&(hostname, Some(port)), "Deno.listenTls()")?; + permissions + .check_net(&(&addr.hostname, Some(addr.port)), "Deno.listenTls()")?; if let Some(path) = cert_file { permissions.check_read(Path::new(path), "Deno.listenTls()")?; } @@ -1084,7 +1050,7 @@ where alpn_protocols.into_iter().map(|s| s.into_bytes()).collect(); } - let bind_addr = resolve_addr_sync(hostname, port)? + let bind_addr = resolve_addr_sync(&addr.hostname, addr.port)? .next() .ok_or_else(|| generic_error("No resolved address found"))?; let domain = if bind_addr.is_ipv4() { @@ -1111,21 +1077,14 @@ where let rid = state.resource_table.add(tls_listener_resource); - Ok(OpConn { - rid, - local_addr: Some(OpAddr::Tcp(IpAddr { - hostname: local_addr.ip().to_string(), - port: local_addr.port(), - })), - remote_addr: None, - }) + Ok((rid, IpAddr::from(local_addr))) } #[op] -pub async fn op_tls_accept( +pub async fn op_net_accept_tls( state: Rc<RefCell<OpState>>, rid: ResourceId, -) -> Result<OpConn, AnyError> { +) -> Result<(ResourceId, IpAddr, IpAddr), AnyError> { let resource = state .borrow() .resource_table @@ -1159,17 +1118,7 @@ pub async fn op_tls_accept( .add(TlsStreamResource::new(tls_stream.into_split())) }; - Ok(OpConn { - rid, - local_addr: Some(OpAddr::Tcp(IpAddr { - hostname: local_addr.ip().to_string(), - port: local_addr.port(), - })), - remote_addr: Some(OpAddr::Tcp(IpAddr { - hostname: remote_addr.ip().to_string(), - port: remote_addr.port(), - })), - }) + Ok((rid, IpAddr::from(local_addr), IpAddr::from(remote_addr))) } #[op] |