summaryrefslogtreecommitdiff
path: root/cli/ops
diff options
context:
space:
mode:
authorLuca Casonato <lucacasonato@yahoo.com>2020-09-13 11:52:20 +0200
committerGitHub <noreply@github.com>2020-09-13 11:52:20 +0200
commitdaa780e2cf2bf606f78c686ac1416786bf85d107 (patch)
tree51b9517bb39d30943b610d58b1ea49233c0b1ac7 /cli/ops
parent82d0f7ec84ccf8652441b5de620e85180ce55fc0 (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.rs12
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