Skip to content

Commit 3cd3c2b

Browse files
committed
Handle case where no new messages are available
1 parent 1ad4f39 commit 3cd3c2b

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

lighthouse-client/src/error.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ pub enum Error {
1717
Value(#[from] ValueError),
1818
#[error("Server error: {} {} (warnings: {:?})", code, message.clone().unwrap_or_else(|| "(no message)".to_string()), warnings)]
1919
Server { code: i32, message: Option<String>, warnings: Vec<String> },
20+
#[error("No next message available")]
21+
NoNextMessage,
2022
#[error("Custom error")]
2123
Custom(String),
2224
}

lighthouse-client/src/lighthouse.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ impl<S> Lighthouse<S>
8585
warn!("Got message without request id from server: {:?}", msg);
8686
}
8787
},
88+
Err(Error::NoNextMessage) => {
89+
info!("No next message available, closing receive loop");
90+
break
91+
},
8892
Err(e) => error!("Bad message: {:?}", e),
8993
}
9094
}
@@ -104,7 +108,7 @@ impl<S> Lighthouse<S>
104108
#[tracing::instrument(skip(ws_stream))]
105109
async fn receive_raw_from(ws_stream: &mut SplitStream<S>) -> Result<Vec<u8>> {
106110
loop {
107-
let message = ws_stream.next().await.ok_or_else(|| Error::custom("Got no message"))??;
111+
let message = ws_stream.next().await.ok_or_else(|| Error::NoNextMessage)??;
108112
match message {
109113
Message::Binary(bytes) => break Ok(bytes),
110114
// We ignore pings for now

0 commit comments

Comments
 (0)