return an Err0RTTRejected when the server rejects a 0-RTT connection

This commit is contained in:
Marten Seemann
2021-03-04 18:14:25 +08:00
parent 97ab014479
commit f8313d868f
5 changed files with 174 additions and 4 deletions

View File

@@ -1458,6 +1458,15 @@ func (s *session) dropEncryptionLevel(encLevel protocol.EncryptionLevel) {
if s.tracer != nil {
s.tracer.DroppedEncryptionLevel(encLevel)
}
if encLevel == protocol.Encryption0RTT {
s.streamsMap.ResetFor0RTT()
if err := s.connFlowController.Reset(); err != nil {
s.closeLocal(err)
}
if err := s.framer.Handle0RTTRejection(); err != nil {
s.closeLocal(err)
}
}
}
// is called for the client, when restoring transport parameters saved for 0-RTT
@@ -1884,3 +1893,9 @@ func (s *session) getPerspective() protocol.Perspective {
func (s *session) GetVersion() protocol.VersionNumber {
return s.version
}
func (s *session) NextSession() Session {
<-s.HandshakeComplete().Done()
s.streamsMap.UseResetMaps()
return s
}