增加包长度上限

This commit is contained in:
lbl8603
2024-06-17 23:46:34 +08:00
parent 7f210e9319
commit 05a60b3cb7
3 changed files with 13 additions and 5 deletions
+6 -1
View File
@@ -170,7 +170,12 @@ impl PacketSenderInner {
fn try_send(&self, buf: &[u8]) -> io::Result<()> {
let len = buf.len();
let mut buf_vec = Vec::with_capacity(buf.len() + 4);
buf_vec.extend_from_slice(&[0, 0, (len >> 8) as u8, (len & 0xFF) as u8]);
buf_vec.extend_from_slice(&[
(len >> 24) as u8,
(len >> 16) as u8,
(len >> 8) as u8,
len as u8,
]);
buf_vec.extend_from_slice(buf);
match self.buffer.try_send(buf_vec) {
Ok(_) => self.notify.notify(self.token, true),
+5 -1
View File
@@ -358,7 +358,11 @@ where
if let Some((route_key, stream, buf, begin)) = map.get_mut(token) {
loop {
let end = if *begin >= 4 {
4 + (((buf[2] as u16) << 8) | buf[3] as u16) as usize
let len = ((buf[0] as usize) << 24)
| ((buf[1] as usize) << 16)
| ((buf[2] as usize) << 8)
| buf[3] as usize;
4 + len
} else {
4
};
+2 -3
View File
@@ -128,11 +128,10 @@ impl<B: AsRef<[u8]>> NetPacket<B> {
"length overflow",
));
}
// 不能大于udp最大载荷长度
if data_len < 12 || data_len > 65535 - 20 - 8 {
if data_len < 12 {
return Err(io::Error::new(
io::ErrorKind::InvalidData,
"length overflow",
"data_len too short",
));
}
Ok(NetPacket { data_len, buffer })