22
22
23
23
use crate :: core:: global:: header_size_bytes;
24
24
use crate :: core:: ser:: { BufReader , ProtocolVersion , Readable } ;
25
+ use crate :: msg:: max_msg_size;
25
26
use crate :: msg:: { Message , MsgHeader , MsgHeaderWrapper , Type } ;
26
27
use crate :: types:: { AttachmentMeta , AttachmentUpdate , Error } ;
27
28
use crate :: {
@@ -30,6 +31,7 @@ use crate::{
30
31
} ;
31
32
use bytes:: { Buf , BufMut , Bytes , BytesMut } ;
32
33
use core:: ser:: Reader ;
34
+ use log:: { info, warn} ;
33
35
use std:: cmp:: min;
34
36
use std:: io:: Read ;
35
37
use std:: mem;
@@ -152,6 +154,34 @@ impl Codec {
152
154
self . state = Header ( header) ;
153
155
}
154
156
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
+
155
185
let mut raw = self . buffer . split_to ( next_len) . freeze ( ) ;
156
186
if header. msg_type == Type :: Headers {
157
187
// Special consideration for a list of headers, as we want to verify and process
0 commit comments