From daa780e2cf2bf606f78c686ac1416786bf85d107 Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Sun, 13 Sep 2020 11:52:20 +0200 Subject: fix(WebSocket): no panic on failed connect + handle promise rejection via error event (#7437) --- cli/ops/websocket.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'cli/ops') diff --git a/cli/ops/websocket.rs b/cli/ops/websocket.rs index 4a5b83b88..ff360055c 100644 --- a/cli/ops/websocket.rs +++ b/cli/ops/websocket.rs @@ -56,13 +56,12 @@ pub async fn op_ws_create( cli_state.check_net_url(&url::Url::parse(&args.url)?)?; cli_state.global_state.flags.ca_file.clone() }; - let uri: Uri = args.url.parse().unwrap(); + let uri: Uri = args.url.parse()?; let request = Request::builder() .method(Method::GET) .uri(&uri) .header("Sec-WebSocket-Protocol", args.protocols) - .body(()) - .unwrap(); + .body(())?; let domain = &uri.host().unwrap().to_string(); let port = &uri.port_u16().unwrap_or(match uri.scheme_str() { Some("wss") => 443, @@ -100,7 +99,12 @@ pub async fn op_ws_create( }; let (stream, response): (WsStream, Response) = - client_async(request, socket).await.unwrap(); + client_async(request, socket).await.map_err(|err| { + ErrBox::type_error(format!( + "failed to connect to WebSocket: {}", + err.to_string() + )) + })?; let mut state = state.borrow_mut(); let rid = state -- cgit v1.2.3