Răsfoiți Sursa

Take MTU into account during TcpSocket dispatch.

whitequark 4 ani în urmă
părinte
comite
f25a531987
1 a modificat fișierele cu 2 adăugiri și 1 ștergeri
  1. 2 1
      src/socket/tcp.rs

+ 2 - 1
src/socket/tcp.rs

@@ -1558,7 +1558,8 @@ impl<'a> TcpSocket<'a> {
                 // Extract as much data as the remote side can receive in this packet
                 // from the transmit buffer.
                 let offset = self.remote_last_seq - self.local_seq_no;
-                let size = cmp::min(self.remote_win_len, self.remote_mss);
+                let size = cmp::min(cmp::min(self.remote_win_len, self.remote_mss),
+                     caps.max_transmission_unit - ip_repr.buffer_len() - repr.mss_header_len());
                 repr.payload = self.tx_buffer.get_allocated(offset, size);
                 // If we've sent everything we had in the buffer, follow it with the PSH or FIN
                 // flags, depending on whether the transmit half of the connection is open.