retire the stateless reset token when the session is closed

This commit is contained in:
Marten Seemann
2019-10-26 17:56:37 +07:00
parent 9a81603b4a
commit ccb777b834
6 changed files with 62 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ type connIDManager struct {
packetsSinceLastChange uint64
addStatelessResetToken func([16]byte)
removeStatelessResetToken func([16]byte)
retireStatelessResetToken func([16]byte)
queueControlFrame func(wire.Frame)
}
@@ -25,12 +26,14 @@ type connIDManager struct {
func newConnIDManager(
initialDestConnID protocol.ConnectionID,
addStatelessResetToken func([16]byte),
removeStatelessResetToken func([16]byte),
retireStatelessResetToken func([16]byte),
queueControlFrame func(wire.Frame),
) *connIDManager {
return &connIDManager{
activeConnectionID: initialDestConnID,
addStatelessResetToken: addStatelessResetToken,
removeStatelessResetToken: removeStatelessResetToken,
retireStatelessResetToken: retireStatelessResetToken,
queueControlFrame: queueControlFrame,
}
@@ -114,6 +117,12 @@ func (h *connIDManager) updateConnectionID() {
h.addStatelessResetToken(*h.activeStatelessResetToken)
}
func (h *connIDManager) Close() {
if h.activeStatelessResetToken != nil {
h.removeStatelessResetToken(*h.activeStatelessResetToken)
}
}
// is called when the server performs a Retry
// and when the server changes the connection ID in the first Initial sent
func (h *connIDManager) ChangeInitialConnID(newConnID protocol.ConnectionID) {