From a7005ac936234cb7cc807d963c458b80c5b79034 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 24 May 2020 15:28:17 +0700 Subject: [PATCH] use a separate function to restore transport parameters for 0-RTT --- session.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/session.go b/session.go index f15275ca..f5df5059 100644 --- a/session.go +++ b/session.go @@ -503,7 +503,7 @@ func (s *session) run() error { case zeroRTTParams := <-s.clientHelloWritten: s.scheduleSending() if zeroRTTParams != nil { - s.processTransportParameters(zeroRTTParams) + s.restoreTransportParameters(zeroRTTParams) close(s.earlySessionReadyChan) } case closeErr := <-s.closeChan: @@ -1266,6 +1266,21 @@ func (s *session) dropEncryptionLevel(encLevel protocol.EncryptionLevel) { } } +// is called for the client, when restoring transport parameters saved for 0-RTT +func (s *session) restoreTransportParameters(params *wire.TransportParameters) { + if s.logger.Debug() { + s.logger.Debugf("Restoring Transport Parameters: %s", params) + } + + s.peerParams = params + s.connIDGenerator.SetMaxActiveConnIDs(params.ActiveConnectionIDLimit) + s.connFlowController.UpdateSendWindow(params.InitialMaxData) + if err := s.streamsMap.UpdateLimits(params); err != nil { + s.closeLocal(err) + return + } +} + func (s *session) processTransportParameters(params *wire.TransportParameters) { if s.logger.Debug() { s.logger.Debugf("Processed Transport Parameters: %s", params)