From 05703d9a35a2639fd98b5e318adc8b26fb7a82f9 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sat, 19 Oct 2019 23:26:00 +0100 Subject: [PATCH] Only advance input pointer on complete, successful read of a Value --- src/packets.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/packets.rs b/src/packets.rs index 3bab5bc..09967ed 100644 --- a/src/packets.rs +++ b/src/packets.rs @@ -103,11 +103,13 @@ impl tokio::codec::Decoder for Codec { let orig_len = buf.len(); let res = self.codec.decode(&mut buf); let final_len = buf.len(); - bs.advance(orig_len - final_len); match res { - Ok(v) => match value::from_value(&v) { - Ok(p) => Ok(Some(p)), - Err(e) => Err(DecodeError::Parse(e, v)) + Ok(v) => { + bs.advance(orig_len - final_len); + match value::from_value(&v) { + Ok(p) => Ok(Some(p)), + Err(e) => Err(DecodeError::Parse(e, v)) + } } Err(value::decoder::Error::Eof) => Ok(None), Err(e) => Err(DecodeError::Read(e)),