Subject: [quicwg/base-drafts] SetLossDetectionTimer pseudocode is wrong (#3564)

From: martinduke <[email-masked]>
Date: Wed, 01 Apr 2020 12:51:11 -0700

in section 5.2.1:

> the timer MUST be set for the packet number space with the earliest *timeout*, except for ApplicationData, which MUST be ignored until the handshake completes;

When the client sends its Finished, it declares the handshake complete, meaning it can have ApplicationData and HandshakeData simultaneously in flight. The PTOs are different for these, because the ApplicationData uses max_ack_delay > 0.

At the end of A.7 (SetLossDetectionTimer())
```
  sent_time, _ = GetEarliestTimeAndSpace(
    time_of_last_sent_ack_eliciting_packet)
  loss_detection_timer.update(sent_time + timeout)
```
The problem here is that if the ApplicationData was sent less than max_ack_delay before the Finished, then the handshake timer should fire first. The correct approach would be to compute the timeout separately for each pn_space and then take the min of all timeouts.

As the pseudocode is non-normative, I believe this is editorial.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/3564