equal
deleted
inserted
replaced
85 return Some(message); |
85 return Some(message); |
86 } |
86 } |
87 Err(nom::Err::Incomplete(_)) => {} |
87 Err(nom::Err::Incomplete(_)) => {} |
88 Err(nom::Err::Failure(e) | nom::Err::Error(e)) => { |
88 Err(nom::Err::Failure(e) | nom::Err::Error(e)) => { |
89 debug!("Invalid message: {:?}", e); |
89 debug!("Invalid message: {:?}", e); |
|
90 trace!("Buffer content: {:?}", String::from_utf8_lossy(&self.buffer[..])); |
90 self.recover(); |
91 self.recover(); |
91 } |
92 } |
92 } |
93 } |
93 } |
94 } |
94 None |
95 None |
99 stream: &mut R, |
100 stream: &mut R, |
100 ) -> Result<HwProtocolMessage> { |
101 ) -> Result<HwProtocolMessage> { |
101 use ProtocolError::*; |
102 use ProtocolError::*; |
102 |
103 |
103 loop { |
104 loop { |
104 if !self.buffer.has_remaining() { |
105 if self.buffer.capacity() < 1024 { |
|
106 self.buffer.reserve(1024 - self.buffer.capacity()); |
|
107 } |
|
108 |
|
109 if !self.buffer.has_remaining() || self.is_recovering { |
105 //todo!("ensure the buffer doesn't grow indefinitely") |
110 //todo!("ensure the buffer doesn't grow indefinitely") |
106 match timeout(self.read_timeout, stream.read_buf(&mut self.buffer)).await { |
111 match timeout(self.read_timeout, stream.read_buf(&mut self.buffer)).await { |
107 Err(_) => return Err(Timeout), |
112 Err(_) => return Err(Timeout), |
108 Ok(Err(e)) => return Err(Network(Box::new(e))), |
113 Ok(Err(e)) => return Err(Network(Box::new(e))), |
109 Ok(Ok(0)) => return Err(Eof), |
114 Ok(Ok(0)) => return Err(Eof), |