Skip to content

Commit fd8fc85

Browse files
committed
fix: ws: don't talk to dead streams
1 parent 053720d commit fd8fc85

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

v_exchanges_api_generics/src/ws.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -373,13 +373,13 @@ impl<H: WsHandler> WsConnection<H> {
373373
///
374374
/// `pub` for testing only, does not {have to || is expected to} be exposed in any wrappers.
375375
pub async fn reconnect(&mut self) -> Result<(), WsError> {
376-
if self.stream.is_some() {
376+
if let Some(stream) = self.stream.as_mut() {
377377
tracing::info!("Dropping old connection before reconnecting...");
378-
{
379-
let stream = self.stream.as_mut().unwrap();
380-
stream.send(tungstenite::Message::Close(None)).await?;
381-
self.stream = None;
378+
// Best-effort close - ignore errors since the connection may already be broken
379+
if let Err(e) = stream.send(tungstenite::Message::Close(None)).await {
380+
tracing::debug!("Failed to send Close frame (connection likely already dead): {e}");
382381
}
382+
self.stream = None;
383383
}
384384
self.connect().await
385385
}

0 commit comments

Comments
 (0)