From 5ed876f934d9269463c51baf80c93312afef236e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Tue, 10 Jan 2023 15:10:18 +0100 Subject: [PATCH] ws: don't close connection when receiving ping message --- aquatic_ws/src/workers/socket.rs | 35 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/aquatic_ws/src/workers/socket.rs b/aquatic_ws/src/workers/socket.rs index 5c96575..fc47cac 100644 --- a/aquatic_ws/src/workers/socket.rs +++ b/aquatic_ws/src/workers/socket.rs @@ -463,15 +463,34 @@ impl ConnectionReader { .await .ok_or_else(|| anyhow::anyhow!("Stream ended"))??; - match InMessage::from_ws_message(message) { - Ok(in_message) => { - self.handle_in_message(in_message).await?; - } - Err(err) => { - ::log::debug!("Couldn't parse in_message: {:?}", err); + match &message { + tungstenite::Message::Text(_) | tungstenite::Message::Binary(_) => { + match InMessage::from_ws_message(message) { + Ok(in_message) => { + self.handle_in_message(in_message).await?; + } + Err(err) => { + ::log::debug!("Couldn't parse in_message: {:?}", err); - self.send_error_response("Invalid request".into(), None, None) - .await?; + self.send_error_response("Invalid request".into(), None, None) + .await?; + } + } + } + tungstenite::Message::Ping(_) => { + ::log::trace!("Received ping message"); + // tungstenite sends a pong response by itself + } + tungstenite::Message::Pong(_) => { + ::log::trace!("Received pong message"); + } + tungstenite::Message::Close(_) => { + ::log::debug!("Client sent close frame"); + + break Ok(()); + } + tungstenite::Message::Frame(_) => { + ::log::warn!("Read raw websocket frame, this should not happen"); } }