summaryrefslogtreecommitdiff
path: root/cli/ops/tls.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops/tls.rs')
-rw-r--r--cli/ops/tls.rs57
1 files changed, 30 insertions, 27 deletions
diff --git a/cli/ops/tls.rs b/cli/ops/tls.rs
index dca2d8012..27d7739ed 100644
--- a/cli/ops/tls.rs
+++ b/cli/ops/tls.rs
@@ -28,10 +28,10 @@ use tokio_rustls::{
use webpki::DNSNameRef;
pub fn init(i: &mut Isolate, s: &State) {
- i.register_op("op_start_tls", s.stateful_json_op(op_start_tls));
- i.register_op("op_connect_tls", s.stateful_json_op(op_connect_tls));
- i.register_op("op_listen_tls", s.stateful_json_op(op_listen_tls));
- i.register_op("op_accept_tls", s.stateful_json_op(op_accept_tls));
+ i.register_op("op_start_tls", s.stateful_json_op2(op_start_tls));
+ i.register_op("op_connect_tls", s.stateful_json_op2(op_connect_tls));
+ i.register_op("op_listen_tls", s.stateful_json_op2(op_listen_tls));
+ i.register_op("op_accept_tls", s.stateful_json_op2(op_accept_tls));
}
#[derive(Deserialize)]
@@ -52,14 +52,15 @@ struct StartTLSArgs {
}
pub fn op_start_tls(
- state: &State,
+ isolate: &mut deno_core::Isolate,
+ _state: &State,
args: Value,
_zero_copy: Option<ZeroCopyBuf>,
) -> Result<JsonOp, OpError> {
let args: StartTLSArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
let cert_file = args.cert_file.clone();
- let state_ = state.clone();
+ let resource_table = isolate.resource_table.clone();
let mut domain = args.hostname;
if domain.is_empty() {
@@ -67,13 +68,13 @@ pub fn op_start_tls(
}
let op = async move {
- let mut state = state_.borrow_mut();
-
- let mut resource_holder =
- match state.resource_table.remove::<StreamResourceHolder>(rid) {
+ let mut resource_holder = {
+ let mut resource_table_ = resource_table.borrow_mut();
+ match resource_table_.remove::<StreamResourceHolder>(rid) {
Some(resource) => *resource,
None => return Err(OpError::bad_resource_id()),
- };
+ }
+ };
if let StreamResource::TcpStream(ref mut tcp_stream) =
resource_holder.resource
@@ -96,7 +97,8 @@ pub fn op_start_tls(
DNSNameRef::try_from_ascii_str(&domain).expect("Invalid DNS lookup");
let tls_stream = tls_connector.connect(dnsname, tcp_stream).await?;
- let rid = state.resource_table.add(
+ let mut resource_table_ = resource_table.borrow_mut();
+ let rid = resource_table_.add(
"clientTlsStream",
Box::new(StreamResourceHolder::new(StreamResource::ClientTlsStream(
Box::new(tls_stream),
@@ -123,13 +125,14 @@ pub fn op_start_tls(
}
pub fn op_connect_tls(
+ isolate: &mut deno_core::Isolate,
state: &State,
args: Value,
_zero_copy: Option<ZeroCopyBuf>,
) -> Result<JsonOp, OpError> {
let args: ConnectTLSArgs = serde_json::from_value(args)?;
let cert_file = args.cert_file.clone();
- let state_ = state.clone();
+ let resource_table = isolate.resource_table.clone();
state.check_net(&args.hostname, args.port)?;
if let Some(path) = cert_file.clone() {
state.check_read(Path::new(&path))?;
@@ -158,8 +161,8 @@ pub fn op_connect_tls(
let dnsname =
DNSNameRef::try_from_ascii_str(&domain).expect("Invalid DNS lookup");
let tls_stream = tls_connector.connect(dnsname, tcp_stream).await?;
- let mut state = state_.borrow_mut();
- let rid = state.resource_table.add(
+ let mut resource_table_ = resource_table.borrow_mut();
+ let rid = resource_table_.add(
"clientTlsStream",
Box::new(StreamResourceHolder::new(StreamResource::ClientTlsStream(
Box::new(tls_stream),
@@ -298,6 +301,7 @@ struct ListenTlsArgs {
}
fn op_listen_tls(
+ isolate: &mut deno_core::Isolate,
state: &State,
args: Value,
_zero_copy: Option<ZeroCopyBuf>,
@@ -327,10 +331,9 @@ fn op_listen_tls(
waker: None,
local_addr,
};
- let mut state = state.borrow_mut();
- let rid = state
- .resource_table
- .add("tlsListener", Box::new(tls_listener_resource));
+
+ let mut resource_table = isolate.resource_table.borrow_mut();
+ let rid = resource_table.add("tlsListener", Box::new(tls_listener_resource));
Ok(JsonOp::Sync(json!({
"rid": rid,
@@ -348,16 +351,17 @@ struct AcceptTlsArgs {
}
fn op_accept_tls(
- state: &State,
+ isolate: &mut deno_core::Isolate,
+ _state: &State,
args: Value,
_zero_copy: Option<ZeroCopyBuf>,
) -> Result<JsonOp, OpError> {
let args: AcceptTlsArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
- let state = state.clone();
+ let resource_table = isolate.resource_table.clone();
let op = async move {
let accept_fut = poll_fn(|cx| {
- let resource_table = &mut state.borrow_mut().resource_table;
+ let mut resource_table = resource_table.borrow_mut();
let listener_resource = resource_table
.get_mut::<TlsListenerResource>(rid)
.ok_or_else(|| {
@@ -383,9 +387,8 @@ fn op_accept_tls(
let local_addr = tcp_stream.local_addr()?;
let remote_addr = tcp_stream.peer_addr()?;
let tls_acceptor = {
- let state = state.borrow();
- let resource = state
- .resource_table
+ let resource_table = resource_table.borrow();
+ let resource = resource_table
.get::<TlsListenerResource>(rid)
.ok_or_else(OpError::bad_resource_id)
.expect("Can't find tls listener");
@@ -393,8 +396,8 @@ fn op_accept_tls(
};
let tls_stream = tls_acceptor.accept(tcp_stream).await?;
let rid = {
- let mut state = state.borrow_mut();
- state.resource_table.add(
+ let mut resource_table = resource_table.borrow_mut();
+ resource_table.add(
"serverTlsStream",
Box::new(StreamResourceHolder::new(StreamResource::ServerTlsStream(
Box::new(tls_stream),