mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-19 13:29:09 +00:00
fix some panic
This commit is contained in:
parent
d4afc8f655
commit
669f8426b3
2 changed files with 12 additions and 4 deletions
|
@ -124,7 +124,7 @@ async fn process_client_udp_req(args: &UdpGwArgs, tx: Sender<Packet>, mut client
|
|||
}
|
||||
Err(e) => {
|
||||
if client.last_activity.elapsed() >= CLIENT_DISCONNECT_TIMEOUT {
|
||||
log::debug!("client {} last_activity elapsed {e}", client.addr);
|
||||
log::debug!("client {} last_activity elapsed \"{e}\"", client.addr);
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
|
|
14
src/udpgw.rs
14
src/udpgw.rs
|
@ -159,7 +159,11 @@ impl StreamOperation for Packet {
|
|||
} else {
|
||||
None
|
||||
};
|
||||
let mut data = vec![0; length - header.len() - address.as_ref().map_or(0, |addr| addr.len())];
|
||||
let read_len = header.len() + address.as_ref().map_or(0, |addr| addr.len());
|
||||
if length < read_len {
|
||||
return Err(std::io::ErrorKind::InvalidData.into());
|
||||
}
|
||||
let mut data = vec![0; length - read_len];
|
||||
stream.read_exact(&mut data)?;
|
||||
Ok(Packet::new(header, address, &data))
|
||||
}
|
||||
|
@ -186,7 +190,7 @@ impl AsyncStreamOperation for Packet {
|
|||
R: tokio::io::AsyncRead + Unpin + Send,
|
||||
Self: Sized,
|
||||
{
|
||||
let mut buf = [0; 2];
|
||||
let mut buf = [0; UDPGW_LENGTH_FIELD_SIZE];
|
||||
r.read_exact(&mut buf).await?;
|
||||
let length = u16::from_be_bytes(buf) as usize;
|
||||
let header = UdpgwHeader::retrieve_from_async_stream(r).await?;
|
||||
|
@ -195,7 +199,11 @@ impl AsyncStreamOperation for Packet {
|
|||
} else {
|
||||
None
|
||||
};
|
||||
let mut data = vec![0; length - header.len() - address.as_ref().map_or(0, |addr| addr.len())];
|
||||
let read_len = header.len() + address.as_ref().map_or(0, |addr| addr.len());
|
||||
if length < read_len {
|
||||
return Err(std::io::ErrorKind::InvalidData.into());
|
||||
}
|
||||
let mut data = vec![0; length - read_len];
|
||||
r.read_exact(&mut data).await?;
|
||||
Ok(Packet::new(header, address, &data))
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue