diff options
Diffstat (limited to 'ext/net')
-rw-r--r-- | ext/net/lib.rs | 39 | ||||
-rw-r--r-- | ext/net/ops.rs | 6 | ||||
-rw-r--r-- | ext/net/ops_tls.rs | 4 | ||||
-rw-r--r-- | ext/net/ops_unix.rs | 2 |
4 files changed, 11 insertions, 40 deletions
diff --git a/ext/net/lib.rs b/ext/net/lib.rs index 0e3778d5a..1fc7e3420 100644 --- a/ext/net/lib.rs +++ b/ext/net/lib.rs @@ -12,10 +12,8 @@ use deno_core::error::AnyError; use deno_core::OpState; use deno_tls::rustls::RootCertStore; use deno_tls::RootCertStoreProvider; -use std::cell::RefCell; use std::path::Path; use std::path::PathBuf; -use std::rc::Rc; use std::sync::Arc; pub trait NetPermissions { @@ -29,38 +27,11 @@ pub trait NetPermissions { -> Result<(), AnyError>; } -/// `UnstableChecker` is a struct so it can be placed inside `GothamState`; -/// using type alias for a bool could work, but there's a high chance -/// that there might be another type alias pointing to a bool, which -/// would override previously used alias. -pub struct UnstableChecker { - pub unstable: bool, -} - -impl UnstableChecker { - /// Quits the process if the --unstable flag was not provided. - /// - /// This is intentionally a non-recoverable check so that people cannot probe - /// for unstable APIs from stable programs. - // NOTE(bartlomieju): keep in sync with `cli/program_state.rs` - pub fn check_unstable(&self, api_name: &str) { - if !self.unstable { - eprintln!( - "Unstable API '{api_name}'. The --unstable flag must be provided." - ); - std::process::exit(70); - } - } -} /// Helper for checking unstable features. Used for sync ops. -pub fn check_unstable(state: &OpState, api_name: &str) { - state.borrow::<UnstableChecker>().check_unstable(api_name) -} - -/// Helper for checking unstable features. Used for async ops. -pub fn check_unstable2(state: &Rc<RefCell<OpState>>, api_name: &str) { - let state = state.borrow(); - state.borrow::<UnstableChecker>().check_unstable(api_name) +fn check_unstable(state: &OpState, api_name: &str) { + state + .feature_checker + .check_legacy_unstable_or_exit(api_name); } pub fn get_declaration() -> PathBuf { @@ -125,14 +96,12 @@ deno_core::extension!(deno_net, esm = [ "01_net.js", "02_tls.js" ], options = { root_cert_store_provider: Option<Arc<dyn RootCertStoreProvider>>, - unstable: bool, unsafely_ignore_certificate_errors: Option<Vec<String>>, }, state = |state, options| { state.put(DefaultTlsOptions { root_cert_store_provider: options.root_cert_store_provider, }); - state.put(UnstableChecker { unstable: options.unstable }); state.put(UnsafelyIgnoreCertificateErrors( options.unsafely_ignore_certificate_errors, )); diff --git a/ext/net/ops.rs b/ext/net/ops.rs index 5deaeb61e..5738620f8 100644 --- a/ext/net/ops.rs +++ b/ext/net/ops.rs @@ -771,7 +771,6 @@ fn rdata_to_return_record( #[cfg(test)] mod tests { use super::*; - use crate::UnstableChecker; use deno_core::futures::FutureExt; use deno_core::JsRuntime; use deno_core::RuntimeOptions; @@ -1039,7 +1038,6 @@ mod tests { test_ext, state = |state| { state.put(TestPermission {}); - state.put(UnstableChecker { unstable: true }); } ); @@ -1049,6 +1047,10 @@ mod tests { }); let conn_state = runtime.op_state(); + conn_state + .borrow_mut() + .feature_checker + .enable_legacy_unstable(); let server_addr: Vec<&str> = clone_addr.split(':').collect(); let ip_addr = IpAddr { diff --git a/ext/net/ops_tls.rs b/ext/net/ops_tls.rs index 0b84415b9..fe0e70a5c 100644 --- a/ext/net/ops_tls.rs +++ b/ext/net/ops_tls.rs @@ -878,10 +878,10 @@ where .and_then(|it| it.0.clone()); if args.cert_chain.is_some() { - super::check_unstable2(&state, "ConnectTlsOptions.certChain"); + super::check_unstable(&state.borrow(), "ConnectTlsOptions.certChain"); } if args.private_key.is_some() { - super::check_unstable2(&state, "ConnectTlsOptions.privateKey"); + super::check_unstable(&state.borrow(), "ConnectTlsOptions.privateKey"); } { diff --git a/ext/net/ops_unix.rs b/ext/net/ops_unix.rs index 7a5da9fa1..a36f1c30b 100644 --- a/ext/net/ops_unix.rs +++ b/ext/net/ops_unix.rs @@ -114,7 +114,7 @@ where NP: NetPermissions + 'static, { let address_path = Path::new(&path); - super::check_unstable2(&state, "Deno.connect"); + super::check_unstable(&state.borrow(), "Deno.connect"); { let mut state_ = state.borrow_mut(); state_ |