diff --git a/neqo-transport/src/connection/mod.rs b/neqo-transport/src/connection/mod.rs index 4bc8d0f7fc..20b0b2f658 100644 --- a/neqo-transport/src/connection/mod.rs +++ b/neqo-transport/src/connection/mod.rs @@ -1745,12 +1745,12 @@ impl Connection { // Make a path on which to run the handshake. self.setup_handshake_path(path, now); - self.zero_rtt_state = match self.crypto.enable_0rtt(self.version, self.role) { - Ok(true) => { - qdebug!([self], "Accepted 0-RTT"); - ZeroRttState::AcceptedServer - } - _ => ZeroRttState::Rejected, + self.zero_rtt_state = if self.crypto.enable_0rtt(self.version, self.role) == Ok(true) { + qdebug!([self], "Accepted 0-RTT"); + ZeroRttState::AcceptedServer + } else { + qtrace!([self], "Rejected 0-RTT"); + ZeroRttState::Rejected }; // The server knows the final version if it has remote transport parameters. diff --git a/neqo-transport/src/connection/tests/zerortt.rs b/neqo-transport/src/connection/tests/zerortt.rs index aa9ba53889..43679fe70f 100644 --- a/neqo-transport/src/connection/tests/zerortt.rs +++ b/neqo-transport/src/connection/tests/zerortt.rs @@ -277,17 +277,15 @@ fn zero_rtt_loss_accepted() { let mut now = now(); let client_stream_id = client.stream_create(StreamType::UniDi).unwrap(); client.stream_send(client_stream_id, &[1, 2, 3]).unwrap(); - let ci = client.process(None, now); + let mut ci = client.process(None, now); assert!(ci.as_dgram_ref().is_some()); - if i > 0 { - // Drop CI/0-RTT a number of times - qdebug!("Drop CI/0-RTT {} times", i); - for _ in 0..i { - now += client.process(None, now).callback(); - let ci = client.process(None, now); - assert!(ci.as_dgram_ref().is_some()); - } + // Drop CI/0-RTT a number of times + qdebug!("Drop CI/0-RTT {} extra times", i); + for _ in 0..i { + now += client.process(None, now).callback(); + ci = client.process(None, now); + assert!(ci.as_dgram_ref().is_some()); } // Process CI/0-RTT @@ -297,6 +295,9 @@ fn zero_rtt_loss_accepted() { // 0-RTT should be accepted _ = client.process(si.as_dgram_ref(), now); let recvd_0rtt_reject = |e| e == ConnectionEvent::ZeroRttRejected; - assert!(!client.events().any(recvd_0rtt_reject)); + assert!( + !client.events().any(recvd_0rtt_reject), + "rejected 0-RTT after {i} extra dropped packets" + ); } } diff --git a/test-fixture/src/lib.rs b/test-fixture/src/lib.rs index a4ab021289..82dfb1d006 100644 --- a/test-fixture/src/lib.rs +++ b/test-fixture/src/lib.rs @@ -53,7 +53,7 @@ pub fn fixture_init() { // This needs to be > 2ms to avoid it being rounded to zero. // NSS operates in milliseconds and halves any value it is provided. -pub const ANTI_REPLAY_WINDOW: Duration = Duration::from_millis(10); +pub const ANTI_REPLAY_WINDOW: Duration = Duration::from_millis(10000); /// A baseline time for all tests. This needs to be earlier than what `now()` produces /// because of the need to have a span of time elapse for anti-replay purposes.