Skip to content
Snippets Groups Projects
Commit 60b62f30 authored by Dmitry Ivanov's avatar Dmitry Ivanov Committed by Maksim Kaitmazian
Browse files

fix(stream): Fix another problem in read_message

Previously, we'd loop forever if there wasn't enough data for decode.
parent d2031e75
No related branches found
No related tags found
1 merge request!920pgproto module
......@@ -69,18 +69,18 @@ impl<S: io::Read> PgStream<S> {
/// Receive a new message from client.
pub fn read_message(&mut self) -> PgWireResult<FeMessage> {
loop {
if self.ibuf.is_empty() {
let cnt = read_into_buf(&mut self.raw, &mut self.ibuf)?;
log::debug!("received {cnt} bytes from client");
assert!(
cnt > 0,
"TODO: check if coio wrapper returns 0 or EOF error"
);
if !self.ibuf.is_empty() {
if let Some(message) = self.try_decode_message()? {
return Ok(message);
}
}
if let Some(message) = self.try_decode_message()? {
return Ok(message);
}
let cnt = read_into_buf(&mut self.raw, &mut self.ibuf)?;
log::info!("received {cnt} bytes from client");
assert!(
cnt > 0,
"TODO: check if coio wrapper returns 0 or EOF error"
);
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment