store the RTT in the token, not in the session ticket (#5065)

* remove RTT from session ticket

* save RTT in token

* use mus as rtt unit in token

* move RTT from session state to token on client side

* Rename the rtt variables

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

* Update internal/handshake/token_generator.go

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

* Update token_generator.go

* Update connection.go

* Update token_generator.go

* correct slice  access in fuzz.go

* rearrange connection constructor parameters

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
This commit is contained in:
Ameame
2025-05-16 18:25:58 +08:00
committed by GitHub
parent eb8547ca73
commit 8ef0a71581
13 changed files with 67 additions and 140 deletions

View File

@@ -93,6 +93,7 @@ type baseServer struct {
*tls.Config,
*handshake.TokenGenerator,
bool, /* client address validated by an address validation token */
time.Duration,
*logging.ConnectionTracer,
utils.Logger,
protocol.Version,
@@ -637,6 +638,12 @@ func (s *baseServer) handleInitialImpl(p receivedPacket, hdr *wire.Header) error
return nil
}
// restore RTT from token
var rtt time.Duration
if token != nil && !token.IsRetryToken {
rtt = token.RTT
}
config := s.config
clientInfo := &ClientInfo{
RemoteAddr: p.remoteAddr,
@@ -710,6 +717,7 @@ func (s *baseServer) handleInitialImpl(p receivedPacket, hdr *wire.Header) error
s.tlsConf,
s.tokenGenerator,
clientAddrVerified,
rtt,
tracer,
s.logger,
hdr.Version,