diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2019-09-10 06:59:40 +0200 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-09-10 00:59:40 -0400 |
commit | 2a83327a21e83180a21afd428b11aa03e3080346 (patch) | |
tree | 670ac1ca0644d3b082d1baffc8514ad9d9fe3ef4 /cli/ops/net.rs | |
parent | 377966764636350c524b526da50c055243ab3005 (diff) |
fix: replace bad rid panics with errors (#2870)
Diffstat (limited to 'cli/ops/net.rs')
-rw-r--r-- | cli/ops/net.rs | 68 |
1 files changed, 30 insertions, 38 deletions
diff --git a/cli/ops/net.rs b/cli/ops/net.rs index a9a62b148..11bf410d1 100644 --- a/cli/ops/net.rs +++ b/cli/ops/net.rs @@ -1,6 +1,5 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. use super::dispatch_json::{Deserialize, JsonOp, Value}; -use crate::deno_error; use crate::resolve_addr::resolve_addr; use crate::resources; use crate::resources::Resource; @@ -28,28 +27,24 @@ pub fn op_accept( let args: AcceptArgs = serde_json::from_value(args)?; let server_rid = args.rid as u32; - match resources::lookup(server_rid) { - None => Err(deno_error::bad_resource()), - Some(server_resource) => { - let op = tokio_util::accept(server_resource) - .and_then(move |(tcp_stream, _socket_addr)| { - let local_addr = tcp_stream.local_addr()?; - let remote_addr = tcp_stream.peer_addr()?; - let tcp_stream_resource = resources::add_tcp_stream(tcp_stream); - Ok((tcp_stream_resource, local_addr, remote_addr)) - }) - .map_err(ErrBox::from) - .and_then(move |(tcp_stream_resource, local_addr, remote_addr)| { - futures::future::ok(json!({ - "rid": tcp_stream_resource.rid, - "localAddr": local_addr.to_string(), - "remoteAddr": remote_addr.to_string(), - })) - }); - - Ok(JsonOp::Async(Box::new(op))) - } - } + let server_resource = resources::lookup(server_rid)?; + let op = tokio_util::accept(server_resource) + .and_then(move |(tcp_stream, _socket_addr)| { + let local_addr = tcp_stream.local_addr()?; + let remote_addr = tcp_stream.peer_addr()?; + let tcp_stream_resource = resources::add_tcp_stream(tcp_stream); + Ok((tcp_stream_resource, local_addr, remote_addr)) + }) + .map_err(ErrBox::from) + .and_then(move |(tcp_stream_resource, local_addr, remote_addr)| { + futures::future::ok(json!({ + "rid": tcp_stream_resource.rid, + "localAddr": local_addr.to_string(), + "remoteAddr": remote_addr.to_string(), + })) + }); + + Ok(JsonOp::Async(Box::new(op))) } #[derive(Deserialize)] @@ -105,22 +100,19 @@ pub fn op_shutdown( ) -> Result<JsonOp, ErrBox> { let args: ShutdownArgs = serde_json::from_value(args)?; - let rid = args.rid; + let rid = args.rid as u32; let how = args.how; - match resources::lookup(rid as u32) { - None => Err(deno_error::bad_resource()), - Some(mut resource) => { - let shutdown_mode = match how { - 0 => Shutdown::Read, - 1 => Shutdown::Write, - _ => unimplemented!(), - }; - - // Use UFCS for disambiguation - Resource::shutdown(&mut resource, shutdown_mode)?; - Ok(JsonOp::Sync(json!({}))) - } - } + let mut resource = resources::lookup(rid)?; + + let shutdown_mode = match how { + 0 => Shutdown::Read, + 1 => Shutdown::Write, + _ => unimplemented!(), + }; + + // Use UFCS for disambiguation + Resource::shutdown(&mut resource, shutdown_mode)?; + Ok(JsonOp::Sync(json!({}))) } #[derive(Deserialize)] |