From 1974eb10210832da946ee57fd216b7bc0cf398aa Mon Sep 17 00:00:00 2001 From: Andreu Botella Date: Sun, 28 Nov 2021 12:25:49 +0100 Subject: fix(websocket): bad rid on WebSocketStream abort(#12913) Fix a bad resource ID error when aborting a WebSocketStream immediately after its creation. --- ext/websocket/lib.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'ext/websocket') diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs index ba626a45a..f3d44cac7 100644 --- a/ext/websocket/lib.rs +++ b/ext/websocket/lib.rs @@ -239,6 +239,16 @@ where ); } + let cancel_resource = if let Some(cancel_rid) = args.cancel_handle { + let r = state + .borrow_mut() + .resource_table + .get::(cancel_rid)?; + Some(r) + } else { + None + }; + let unsafely_ignore_certificate_errors = state .borrow() .try_borrow::() @@ -283,13 +293,9 @@ where let client = client_async(request, socket); let (stream, response): (WsStream, Response) = - if let Some(cancel_rid) = args.cancel_handle { - let r = state - .borrow_mut() - .resource_table - .get::(cancel_rid)?; + if let Some(cancel_resource) = cancel_resource { client - .or_cancel(r.0.to_owned()) + .or_cancel(cancel_resource.0.to_owned()) .await .map_err(|_| DomExceptionAbortError::new("connection was aborted"))? } else { -- cgit v1.2.3