summaryrefslogtreecommitdiff
path: root/ext/net/ops_tls.rs
diff options
context:
space:
mode:
authorBartek Iwańczuk <biwanczuk@gmail.com>2022-10-25 22:50:55 +0200
committerGitHub <noreply@github.com>2022-10-25 22:50:55 +0200
commitaf62e0833dbb23ac0af674b57e5938be97ad57c8 (patch)
tree025e5004d4a605f945e74ee456cf615c2d7d7352 /ext/net/ops_tls.rs
parent378e6a8c0369f3256cde8a595d3dbdfe4f1dc2f9 (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.rs99
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]