forked from quic-go/quic-go
send a HANDSHAKE_DONE frame after handshake completion (as a server)
This commit is contained in:
@@ -603,16 +603,14 @@ func (s *session) handleHandshakeComplete() {
|
||||
|
||||
s.connIDGenerator.SetHandshakeComplete()
|
||||
s.sentPacketHandler.SetHandshakeComplete()
|
||||
// The client completes the handshake first (after sending the CFIN).
|
||||
// We need to make sure it learns about the server completing the handshake,
|
||||
// in order to stop retransmitting handshake packets.
|
||||
// They will stop retransmitting handshake packets when receiving the first 1-RTT packet.
|
||||
|
||||
if s.perspective == protocol.PerspectiveServer {
|
||||
token, err := s.tokenGenerator.NewToken(s.conn.RemoteAddr())
|
||||
if err != nil {
|
||||
s.closeLocal(err)
|
||||
}
|
||||
s.queueControlFrame(&wire.NewTokenFrame{Token: token})
|
||||
s.queueControlFrame(&wire.HandshakeDoneFrame{})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -855,6 +853,7 @@ func (s *session) handleFrame(f wire.Frame, pn protocol.PacketNumber, encLevel p
|
||||
err = s.handleNewConnectionIDFrame(frame)
|
||||
case *wire.RetireConnectionIDFrame:
|
||||
err = s.handleRetireConnectionIDFrame(frame)
|
||||
case *wire.HandshakeDoneFrame:
|
||||
default:
|
||||
err = fmt.Errorf("unexpected frame type: %s", reflect.ValueOf(&frame).Elem().Type().Name())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user