增加包长度上限
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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 })
|
||||
|
||||
Reference in New Issue
Block a user