Pārlūkot izejas kodu

tcp: add test for ack one-too-high in SYN_RECEIVED.

Dario Nieuwenhuis 3 gadi atpakaļ
vecāks
revīzija
9c5f62e63b
1 mainītis faili ar 31 papildinājumiem un 0 dzēšanām
  1. 31 0
      src/socket/tcp.rs

+ 31 - 0
src/socket/tcp.rs

@@ -3072,6 +3072,37 @@ mod test {
         assert_eq!(s.state, State::SynReceived);
     }
 
+    #[test]
+    fn test_syn_received_ack_too_high() {
+        let mut s = socket_syn_received();
+        recv!(
+            s,
+            [TcpRepr {
+                control: TcpControl::Syn,
+                seq_number: LOCAL_SEQ,
+                ack_number: Some(REMOTE_SEQ + 1),
+                max_seg_size: Some(BASE_MSS),
+                ..RECV_TEMPL
+            }]
+        );
+        send!(
+            s,
+            TcpRepr {
+                seq_number: REMOTE_SEQ + 1,
+                ack_number: Some(LOCAL_SEQ + 2), // wrong
+                ..SEND_TEMPL
+            },
+            // TODO is this correct? probably not
+            Ok(Some(TcpRepr {
+                control: TcpControl::None,
+                seq_number: LOCAL_SEQ + 1,
+                ack_number: Some(REMOTE_SEQ + 1),
+                ..RECV_TEMPL
+            }))
+        );
+        assert_eq!(s.state, State::SynReceived);
+    }
+
     #[test]
     fn test_syn_received_fin() {
         let mut s = socket_syn_received();