From c41fe3df3ee57802ac0f2f5ea6ce097c96edd1c6 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 17 Oct 2019 15:41:42 +0100 Subject: [PATCH] Carry irritant in parse error --- src/packets.rs | 13 +++++-------- src/peer.rs | 5 +++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/packets.rs b/src/packets.rs index 91a19eb..3bab5bc 100644 --- a/src/packets.rs +++ b/src/packets.rs @@ -44,7 +44,7 @@ pub enum Out { #[derive(Debug)] pub enum DecodeError { Read(value::decoder::Error), - Parse(value::error::Error), + Parse(value::error::Error, V), } impl From for DecodeError { @@ -53,12 +53,6 @@ impl From for DecodeError { } } -impl From for DecodeError { - fn from(v: value::error::Error) -> Self { - DecodeError::Parse(v) - } -} - //--------------------------------------------------------------------------- #[derive(Debug)] @@ -111,7 +105,10 @@ impl tokio::codec::Decoder for Codec { let final_len = buf.len(); bs.advance(orig_len - final_len); match res { - Ok(v) => Ok(Some(value::from_value(&v)?)), + Ok(v) => 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)), } diff --git a/src/peer.rs b/src/peer.rs index 51ee63f..7fd804f 100644 --- a/src/peer.rs +++ b/src/peer.rs @@ -93,8 +93,9 @@ impl Peer { to_send.push(err(s)); running = false; } - Err(packets::DecodeError::Parse(e)) => { - to_send.push(err(&format!("Packet deserialization error: {:?}", e))); + Err(packets::DecodeError::Parse(e, v)) => { + to_send.push(err(&format!( + "Packet deserialization error ({}) decoding {:?} ", e, v))); running = false; } }