implement the new Retry mechanism

This commit is contained in:
Marten Seemann
2018-08-12 10:41:56 +07:00
parent d8aa49d0f9
commit f88b7bb175
23 changed files with 401 additions and 1082 deletions

View File

@@ -51,9 +51,11 @@ type packetPacker struct {
perspective protocol.Perspective
version protocol.VersionNumber
divNonce []byte
cryptoSetup sealingManager
token []byte
divNonce []byte
packetNumberGenerator *packetNumberGenerator
getPacketNumberLen func(protocol.PacketNumber) protocol.PacketNumberLen
streams streamFrameSource
@@ -75,6 +77,7 @@ func newPacketPacker(
initialPacketNumber protocol.PacketNumber,
getPacketNumberLen func(protocol.PacketNumber) protocol.PacketNumberLen,
remoteAddr net.Addr, // only used for determining the max packet size
token []byte,
divNonce []byte,
cryptoSetup sealingManager,
streamFramer streamFrameSource,
@@ -97,6 +100,7 @@ func newPacketPacker(
return &packetPacker{
cryptoSetup: cryptoSetup,
divNonce: divNonce,
token: token,
destConnID: destConnID,
srcConnID: srcConnID,
perspective: perspective,
@@ -463,6 +467,7 @@ func (p *packetPacker) getHeader(encLevel protocol.EncryptionLevel) *wire.Header
header.PayloadLen = p.maxPacketSize
if !p.hasSentPacket && p.perspective == protocol.PerspectiveClient {
header.Type = protocol.PacketTypeInitial
header.Token = p.token
} else {
header.Type = protocol.PacketTypeHandshake
}