@@ -662,6 +662,7 @@ impl<'a> TcpSocket<'a> {
662
662
// Send the extracted data.
663
663
net_trace ! ( "tcp:{}:{}: tx buffer: peeking at {} octets (from {})" ,
664
664
self . local_endpoint, self . remote_endpoint, data. len( ) , offset) ;
665
+ repr. seq_number += offset;
665
666
repr. payload = data;
666
667
// Speculatively shrink the remote window. This will get updated the next
667
668
// time we receive a packet.
@@ -1035,6 +1036,25 @@ mod test {
1035
1036
assert_eq ! ( s. tx_buffer. len( ) , 0 ) ;
1036
1037
}
1037
1038
1039
+ #[ test]
1040
+ fn test_established_send_no_ack_send ( ) {
1041
+ let mut s = socket_established ( ) ;
1042
+ s. tx_buffer . enqueue_slice ( b"abcdef" ) ;
1043
+ recv ! ( s, [ TcpRepr {
1044
+ seq_number: LOCAL_SEQ + 1 ,
1045
+ ack_number: Some ( REMOTE_SEQ + 1 ) ,
1046
+ payload: & b"abcdef" [ ..] ,
1047
+ ..RECV_TEMPL
1048
+ } ] ) ;
1049
+ s. tx_buffer . enqueue_slice ( b"foobar" ) ;
1050
+ recv ! ( s, [ TcpRepr {
1051
+ seq_number: LOCAL_SEQ + 1 + 6 ,
1052
+ ack_number: Some ( REMOTE_SEQ + 1 ) ,
1053
+ payload: & b"foobar" [ ..] ,
1054
+ ..RECV_TEMPL
1055
+ } ] ) ;
1056
+ }
1057
+
1038
1058
#[ test]
1039
1059
fn test_established_send_buf_gt_win ( ) {
1040
1060
let mut s = socket_established ( ) ;
0 commit comments