diff options
author | crowlKats <13135287+crowlKats@users.noreply.github.com> | 2021-05-01 20:52:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-01 20:52:13 +0200 |
commit | da911e741c0482b27ab7e5d96a26f6f0ff0b1d00 (patch) | |
tree | b241ddbe7d9e7b2abe7aafc76212d2c0d19fe92d /extensions/websocket/lib.rs | |
parent | 012da3ae1e74ca5ce9d91707b6262bd725a26fcc (diff) |
fix(extension/websocket): better websocket errors (#10458)
Diffstat (limited to 'extensions/websocket/lib.rs')
-rw-r--r-- | extensions/websocket/lib.rs | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/extensions/websocket/lib.rs b/extensions/websocket/lib.rs index 8dfa26c47..0da8d4911 100644 --- a/extensions/websocket/lib.rs +++ b/extensions/websocket/lib.rs @@ -35,7 +35,6 @@ use std::rc::Rc; use std::sync::Arc; use tokio::net::TcpStream; use tokio_rustls::{rustls::ClientConfig, TlsConnector}; -use tokio_tungstenite::tungstenite::Error as TungsteniteError; use tokio_tungstenite::tungstenite::{ handshake::client::Response, protocol::frame::coding::CloseCode, protocol::CloseFrame, Message, @@ -110,10 +109,9 @@ pub struct CreateArgs { #[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct CreateResponse { - success: bool, - rid: Option<ResourceId>, - protocol: Option<String>, - extensions: Option<String>, + rid: ResourceId, + protocol: String, + extensions: String, } pub async fn op_ws_create<WP>( @@ -152,18 +150,7 @@ where _ => unreachable!(), }); let addr = format!("{}:{}", domain, port); - let try_socket = TcpStream::connect(addr).await; - let tcp_socket = match try_socket.map_err(TungsteniteError::Io) { - Ok(socket) => socket, - Err(_) => { - return Ok(CreateResponse { - success: false, - rid: None, - protocol: None, - extensions: None, - }) - } - }; + let tcp_socket = TcpStream::connect(addr).await?; let socket: MaybeTlsStream<TcpStream> = match uri.scheme_str() { Some("ws") => MaybeTlsStream::Plain(tcp_socket), @@ -215,10 +202,9 @@ where .map(|header| header.to_str().unwrap()) .collect::<String>(); Ok(CreateResponse { - success: true, - rid: Some(rid), - protocol: Some(protocol.to_string()), - extensions: Some(extensions), + rid, + protocol: protocol.to_string(), + extensions, }) } @@ -293,7 +279,7 @@ pub enum NextEventResponse { Close { code: u16, reason: String }, Ping, Pong, - Error, + Error(String), Closed, } @@ -324,7 +310,7 @@ pub async fn op_ws_next_event( }, Some(Ok(Message::Ping(_))) => NextEventResponse::Ping, Some(Ok(Message::Pong(_))) => NextEventResponse::Pong, - Some(Err(_)) => NextEventResponse::Error, + Some(Err(e)) => NextEventResponse::Error(e.to_string()), None => { state.borrow_mut().resource_table.close(rid).unwrap(); NextEventResponse::Closed |