diff options
| author | Luca Casonato <lucacasonato@yahoo.com> | 2020-09-13 11:52:20 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-13 11:52:20 +0200 |
| commit | daa780e2cf2bf606f78c686ac1416786bf85d107 (patch) | |
| tree | 51b9517bb39d30943b610d58b1ea49233c0b1ac7 /cli/ops | |
| parent | 82d0f7ec84ccf8652441b5de620e85180ce55fc0 (diff) | |
fix(WebSocket): no panic on failed connect + handle promise rejection via error event (#7437)
Diffstat (limited to 'cli/ops')
| -rw-r--r-- | cli/ops/websocket.rs | 12 |
1 files changed, 8 insertions, 4 deletions
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 |
