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

@@ -41,23 +41,27 @@ func newToken(tg *handshake.TokenGenerator, data []byte) int {
}
usesUDPAddr := data[0]%2 == 0
data = data[1:]
if len(data) != 18 {
if len(data) < 18 {
return -1
}
var addr net.Addr
if usesUDPAddr {
addr = &net.UDPAddr{
Port: int(binary.BigEndian.Uint16(data[:2])),
IP: net.IP(data[2:]),
IP: net.IP(data[2:18]),
}
} else {
addr = &net.TCPAddr{
Port: int(binary.BigEndian.Uint16(data[:2])),
IP: net.IP(data[2:]),
IP: net.IP(data[2:18]),
}
}
data = data[18:]
if len(data) < 1 {
return -1
}
start := time.Now()
encrypted, err := tg.NewToken(addr)
encrypted, err := tg.NewToken(addr, time.Duration(data[0])*time.Millisecond)
if err != nil {
panic(err)
}