Skip to content

Commit

Permalink
reading code
Browse files Browse the repository at this point in the history
  • Loading branch information
ssrlive committed Apr 21, 2024
1 parent 082b2b6 commit 1e03d16
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
16 changes: 11 additions & 5 deletions src/stream/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ impl IpStackTcpStream {
src_addr: SocketAddr,
dst_addr: SocketAddr,
tcp: TcpHeaderWrapper,
pkt_sender: PacketSender,
packet_sender: PacketSender,
stream_receiver: PacketReceiver,
mtu: u16,
tcp_timeout: Duration,
Expand All @@ -73,7 +73,7 @@ impl IpStackTcpStream {
src_addr,
dst_addr,
stream_receiver,
packet_sender: pkt_sender.clone(),
packet_sender,
packet_to_send: None,
tcb: Tcb::new(tcp.inner().sequence_number + 1, tcp_timeout),
mtu,
Expand All @@ -84,7 +84,10 @@ impl IpStackTcpStream {
return Ok(stream);
}
if !tcp.inner().rst {
_ = pkt_sender.send(stream.create_rev_packet(RST | ACK, TTL, None, Vec::new())?);
let pkt = stream.create_rev_packet(RST | ACK, TTL, None, Vec::new())?;
if let Err(err) = stream.packet_sender.send(pkt) {
log::warn!("Error sending RST packet: {:?}", err);
}
}
Err(IpStackError::InvalidTcpPacket)
}
Expand Down Expand Up @@ -156,7 +159,8 @@ impl IpStackTcpStream {
tcp_header.header_len() as u16,
);
payload.truncate(payload_len as usize);
ip_h.payload_length = (payload.len() + tcp_header.header_len()) as u16;
let len = payload.len() + tcp_header.header_len();
ip_h.set_payload_length(len).map_err(IpStackError::from)?;

IpHeader::Ipv6(ip_h)
}
Expand Down Expand Up @@ -513,7 +517,9 @@ impl AsyncWrite for IpStackTcpStream {
impl Drop for IpStackTcpStream {
fn drop(&mut self) {
if let Ok(p) = self.create_rev_packet(NON, DROP_TTL, None, Vec::new()) {
_ = self.packet_sender.send(p);
if let Err(err) = self.packet_sender.send(p) {
log::warn!("Error sending NON packet: {:?}", err);
}
}
}
}
4 changes: 3 additions & 1 deletion src/stream/tcp_wrapper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,9 @@ impl Drop for IpStackTcpStream {
fn drop(&mut self) {
if let Some(mut inner) = self.inner.take() {
tokio::spawn(async move {
_ = timeout(Duration::from_secs(2), inner.shutdown()).await;
if let Err(err) = timeout(Duration::from_secs(2), inner.shutdown()).await {
log::warn!("Error while dropping IpStackTcpStream: {:?}", err);
}
});
}
}
Expand Down

0 comments on commit 1e03d16

Please sign in to comment.