diff options
author | Yoshiya Hinosawa <stibium121@gmail.com> | 2023-10-04 11:37:39 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-04 11:37:39 +0900 |
commit | da0b945804f19903beac71b23ff1040ebdb9b554 (patch) | |
tree | 8ec0508fbc04839f113b2d58169090d14b474cdd /ext/net | |
parent | 8c1677ecbcbb474fc6a5ac9b5f73b562677bb829 (diff) |
feat(unstable): add unix domain socket support to Deno.serve (#20759)
Diffstat (limited to 'ext/net')
-rw-r--r-- | ext/net/01_net.js | 9 | ||||
-rw-r--r-- | ext/net/ops_unix.rs | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/ext/net/01_net.js b/ext/net/01_net.js index 9cdcdb78c..f2bf5e7df 100644 --- a/ext/net/01_net.js +++ b/ext/net/01_net.js @@ -19,6 +19,7 @@ const { ObjectPrototypeIsPrototypeOf, PromiseResolve, SymbolAsyncIterator, + Symbol, SymbolFor, TypeError, TypedArrayPrototypeSubarray, @@ -416,6 +417,8 @@ class Datagram { } } +const listenOptionApiName = Symbol("listenOptionApiName"); + function listen(args) { switch (args.transport ?? "tcp") { case "tcp": { @@ -427,7 +430,10 @@ function listen(args) { return new Listener(rid, addr); } case "unix": { - const { 0: rid, 1: path } = ops.op_net_listen_unix(args.path); + const { 0: rid, 1: path } = ops.op_net_listen_unix( + args.path, + args[listenOptionApiName] ?? "Deno.listen", + ); const addr = { transport: "unix", path, @@ -505,6 +511,7 @@ export { Datagram, listen, Listener, + listenOptionApiName, resolveDns, shutdown, TcpConn, diff --git a/ext/net/ops_unix.rs b/ext/net/ops_unix.rs index beb41bb4a..7a5da9fa1 100644 --- a/ext/net/ops_unix.rs +++ b/ext/net/ops_unix.rs @@ -194,15 +194,17 @@ where pub fn op_net_listen_unix<NP>( state: &mut OpState, #[string] path: String, + #[string] api_name: String, ) -> Result<(ResourceId, Option<String>), AnyError> where NP: NetPermissions + 'static, { let address_path = Path::new(&path); - super::check_unstable(state, "Deno.listen"); + super::check_unstable(state, &api_name); let permissions = state.borrow_mut::<NP>(); - permissions.check_read(address_path, "Deno.listen()")?; - permissions.check_write(address_path, "Deno.listen()")?; + let api_call_expr = format!("{}()", api_name); + permissions.check_read(address_path, &api_call_expr)?; + permissions.check_write(address_path, &api_call_expr)?; let listener = UnixListener::bind(address_path)?; let local_addr = listener.local_addr()?; let pathname = local_addr.as_pathname().map(pathstring).transpose()?; |