Skip to content

Commit 77fcb0e

Browse files
committed
p2p(codec): log message sizes and warn on >1x; demote Ping/Pong to debug (#2825)
1 parent 1fc0800 commit 77fcb0e

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

p2p/src/codec.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
2323
use crate::core::global::header_size_bytes;
2424
use crate::core::ser::{BufReader, ProtocolVersion, Readable};
25+
use crate::msg::max_msg_size;
2526
use crate::msg::{Message, MsgHeader, MsgHeaderWrapper, Type};
2627
use crate::types::{AttachmentMeta, AttachmentUpdate, Error};
2728
use crate::{
@@ -30,6 +31,7 @@ use crate::{
3031
};
3132
use bytes::{Buf, BufMut, Bytes, BytesMut};
3233
use core::ser::Reader;
34+
use log::{info, warn};
3335
use std::cmp::min;
3436
use std::io::Read;
3537
use std::mem;
@@ -152,6 +154,34 @@ impl Codec {
152154
self.state = Header(header);
153155
}
154156
Header(Known(header)) => {
157+
let msg_type = header.msg_type;
158+
let msg_len = header.msg_len as usize;
159+
160+
let one_x = max_msg_size(msg_type) as usize;
161+
let four_x = one_x * 4;
162+
163+
match msg_type {
164+
Type::Ping | Type::Pong => {
165+
debug!(
166+
"p2p(codec): {:?} size={} (1x={}, 4x={})",
167+
msg_type, msg_len, one_x, four_x
168+
);
169+
}
170+
171+
_ => {
172+
info!(
173+
"p2p(codec): {:?} size={} (1x={}, 4x={})",
174+
msg_type, msg_len, one_x, four_x
175+
);
176+
}
177+
}
178+
if msg_len > one_x {
179+
warn!(
180+
"p2p(codec): {:?} exceeds 1x limit ({} > {})",
181+
msg_type, msg_len, one_x,
182+
);
183+
}
184+
155185
let mut raw = self.buffer.split_to(next_len).freeze();
156186
if header.msg_type == Type::Headers {
157187
// Special consideration for a list of headers, as we want to verify and process

0 commit comments

Comments
 (0)