소스 검색

Fix the TCP FIN emission with queued data rolling over TX buffer.

whitequark 8 년 전
부모
커밋
a20f89f5ee
1개의 변경된 파일1개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      src/socket/tcp.rs

+ 1 - 1
src/socket/tcp.rs

@@ -924,7 +924,7 @@ impl<'a> TcpSocket<'a> {
                 // The FIN control flag occupies the place in the sequence space after
                 // the data in the current segment. If we still have some data left for the next
                 // segment (e.g. the receiver window is too small), then don't send FIN just yet.
-                let all_data_sent = self.tx_buffer.len() == offset + size;
+                let all_data_sent = self.tx_buffer.len() == offset + data.len();
                 match self.state {
                     State::FinWait1 | State::LastAck if all_data_sent => {
                         // We should notify the other side that we've closed the transmit half