From 054655d79b822ebeb5ab78ec506c59cb82a5271d Mon Sep 17 00:00:00 2001 From: Alexis Sellier Date: Tue, 7 Feb 2023 21:13:29 +0100 Subject: [PATCH] node: Log read buffer if not empty --- radicle-node/src/wire/protocol.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/radicle-node/src/wire/protocol.rs b/radicle-node/src/wire/protocol.rs index b76eaa1c..fc0be498 100644 --- a/radicle-node/src/wire/protocol.rs +++ b/radicle-node/src/wire/protocol.rs @@ -26,6 +26,7 @@ use radicle::storage::WriteStorage; use crate::crypto::Signer; use crate::service::reactor::{Fetch, Io}; use crate::service::{routing, session, DisconnectReason, Message, Service}; +use crate::wire; use crate::wire::{Decode, Encode}; use crate::worker::{Task, TaskResult}; use crate::Link; @@ -479,11 +480,22 @@ where // Buffer is empty, or message isn't complete. break; } - Err(err) => { - // TODO(cloudhead): Include error in reason. - log::error!(target: "wire", "Invalid message from {}: {err}", id); + Err(e) => { + log::error!(target: "wire", "Invalid message from {id}: {e}"); + + let mut leftover = if let wire::Error::UnknownMessageType(ty) = e { + ty.to_ne_bytes().to_vec() + } else { + vec![] + }; + leftover.extend(self.read_queue.drain(..)); + + if !leftover.is_empty() { + log::debug!(target: "wire", "Dropping read buffer with `{:?}`", &leftover); + } self.disconnect( fd, + // TODO(cloudhead): Include error in reason. DisconnectReason::Session(session::Error::Misbehavior), ); break;