Take MTU into account during TcpSocket dispatch.

v0.7.x
whitequark 2020-10-25 12:35:42 +00:00 committed by GitHub
commit de5f91a28b
1 changed files with 2 additions and 1 deletions

View File

@ -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.