diff --git a/internal/handshake/crypto_setup.go b/internal/handshake/crypto_setup.go index 9f5aa1c3a..c4ca769cc 100644 --- a/internal/handshake/crypto_setup.go +++ b/internal/handshake/crypto_setup.go @@ -491,7 +491,13 @@ func (h *cryptoSetup) accept0RTT(sessionTicketData []byte) bool { h.logger.Debugf("Unmarshaling transport parameters from session ticket failed: %s", err.Error()) return false } - return h.ourParams.ValidFor0RTT(&tp) + valid := h.ourParams.ValidFor0RTT(&tp) + if valid { + h.logger.Debugf("Accepting 0-RTT.") + } else { + h.logger.Debugf("Transport parameters changed. Rejecting 0-RTT.") + } + return valid } func (h *cryptoSetup) handlePostHandshakeMessage() { diff --git a/internal/handshake/transport_parameters.go b/internal/handshake/transport_parameters.go index 4ab0826f4..d97ee2d10 100644 --- a/internal/handshake/transport_parameters.go +++ b/internal/handshake/transport_parameters.go @@ -413,8 +413,7 @@ func (p *TransportParameters) UnmarshalFromSessionTicket(data []byte) error { if version != transportParameterMarshalingVersion { return fmt.Errorf("unknown transport parameter marshaling version: %d", version) } - tp := &TransportParameters{} - return tp.Unmarshal(data[len(data)-r.Len():], protocol.PerspectiveServer) + return p.Unmarshal(data[len(data)-r.Len():], protocol.PerspectiveServer) } // ValidFor0RTT checks if the transport parameters match those saved in the session ticket.