aboutsummaryrefslogtreecommitdiff
path: root/light-client/src/network.rs
diff options
context:
space:
mode:
Diffstat (limited to 'light-client/src/network.rs')
-rw-r--r--light-client/src/network.rs50
1 files changed, 27 insertions, 23 deletions
diff --git a/light-client/src/network.rs b/light-client/src/network.rs
index 47eb66ab..ed160773 100644
--- a/light-client/src/network.rs
+++ b/light-client/src/network.rs
@@ -75,37 +75,41 @@ impl Network {
})
}
pub fn poll(&mut self) {
- self.queue_in.extend(match self.sock.read() {
- Ok(Message::Text(packet)) => match serde_json::from_str(&packet) {
- Ok(packet) => {
- debug!("<- {packet:?}");
- Some(packet)
- }
- Err(e) => {
- warn!("invalid json packet: {e:?}");
- None
- }
- },
- Ok(Message::Binary(packet)) => {
- match bincode::decode_from_slice(&packet, BINCODE_CONFIG) {
- Ok((packet, _)) => {
+ loop {
+ self.queue_in.extend(match self.sock.read() {
+ Ok(Message::Text(packet)) => match serde_json::from_str(&packet) {
+ Ok(packet) => {
debug!("<- {packet:?}");
Some(packet)
}
Err(e) => {
- warn!("invalid bincode packet: {e:?}");
+ warn!("invalid json packet: {e:?}");
None
}
+ },
+ Ok(Message::Binary(packet)) => {
+ match bincode::decode_from_slice(&packet, BINCODE_CONFIG) {
+ Ok((packet, _)) => {
+ debug!("<- {packet:?}");
+ Some(packet)
+ }
+ Err(e) => {
+ warn!("invalid bincode packet: {e:?}");
+ None
+ }
+ }
}
- }
- Ok(_) => None,
- Err(e) => {
- if let Some(e) = e.into_non_blocking() {
- warn!("{e:?}");
+ Ok(_) => None,
+ Err(e) => {
+ if let Some(e) = e.into_non_blocking() {
+ warn!("{e:?}");
+ None
+ } else {
+ break;
+ }
}
- None
- }
- });
+ });
+ }
for packet in self.queue_out.drain(..) {
debug!("-> {packet:?}");