From 2ca454b402d48c1808f8233c5adedc11b714c63c Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Sun, 15 Aug 2021 13:29:19 +0200 Subject: refactor(ops): return BadResource errors in ResourceTable calls (#11710) * refactor(ops): return BadResource errors in ResourceTable calls Instead of relying on callers to map Options to Results via `.ok_or_else(bad_resource_id)` at over 176 different call sites ... --- ext/http/lib.rs | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) (limited to 'ext/http/lib.rs') diff --git a/ext/http/lib.rs b/ext/http/lib.rs index eac09a1ec..8e9142345 100644 --- a/ext/http/lib.rs +++ b/ext/http/lib.rs @@ -175,8 +175,7 @@ async fn op_http_request_next( let conn_resource = state .borrow() .resource_table - .get::(conn_rid) - .ok_or_else(bad_resource_id)?; + .get::(conn_rid)?; let cancel = RcRef::map(conn_resource.clone(), |r| &r.cancel); @@ -395,8 +394,7 @@ async fn op_http_response( let response_sender = state .borrow_mut() .resource_table - .take::(rid) - .ok_or_else(bad_resource_id)?; + .take::(rid)?; let response_sender = Rc::try_unwrap(response_sender) .ok() .expect("multiple op_http_respond ongoing"); @@ -406,8 +404,7 @@ async fn op_http_response( let conn_resource = state .borrow() .resource_table - .get::(conn_rid) - .ok_or_else(bad_resource_id)?; + .get::(conn_rid)?; let mut builder = Response::builder().status(status); @@ -444,7 +441,7 @@ async fn op_http_response( poll_fn(|cx| match conn_resource.poll(cx) { Poll::Ready(x) => { - state.borrow_mut().resource_table.close(conn_rid); + state.borrow_mut().resource_table.close(conn_rid).ok(); Poll::Ready(x) } Poll::Pending => Poll::Ready(Ok(())), @@ -465,14 +462,12 @@ async fn op_http_response_close( let resource = state .borrow_mut() .resource_table - .take::(rid) - .ok_or_else(bad_resource_id)?; + .take::(rid)?; let conn_resource = state .borrow() .resource_table - .get::(resource.conn_rid) - .ok_or_else(bad_resource_id)?; + .get::(resource.conn_rid)?; drop(resource); let r = poll_fn(|cx| match conn_resource.poll(cx) { @@ -494,14 +489,12 @@ async fn op_http_request_read( let resource = state .borrow() .resource_table - .get::(rid as u32) - .ok_or_else(bad_resource_id)?; + .get::(rid as u32)?; let conn_resource = state .borrow() .resource_table - .get::(resource.conn_rid) - .ok_or_else(bad_resource_id)?; + .get::(resource.conn_rid)?; let mut inner = RcRef::map(resource.clone(), |r| &r.inner) .borrow_mut() @@ -547,14 +540,12 @@ async fn op_http_response_write( let resource = state .borrow() .resource_table - .get::(rid as u32) - .ok_or_else(bad_resource_id)?; + .get::(rid as u32)?; let conn_resource = state .borrow() .resource_table - .get::(resource.conn_rid) - .ok_or_else(bad_resource_id)?; + .get::(resource.conn_rid)?; let mut body = RcRef::map(&resource, |r| &r.body).borrow_mut().await; @@ -598,8 +589,7 @@ async fn op_http_upgrade_websocket( let req_resource = state .borrow_mut() .resource_table - .take::(rid) - .ok_or_else(bad_resource_id)?; + .take::(rid)?; let mut inner = RcRef::map(&req_resource, |r| &r.inner).borrow_mut().await; -- cgit v1.2.3