fix race condition when generating stateless reset tokens

This commit is contained in:
Marten Seemann
2019-09-25 07:57:56 +07:00
parent 9e6bff0b98
commit 288c5af635

View File

@@ -35,6 +35,7 @@ type packetHandlerMap struct {
deleteRetiredSessionsAfter time.Duration
statelessResetEnabled bool
statelessResetMutex sync.Mutex
statelessResetHasher hash.Hash
logger utils.Logger
@@ -259,9 +260,11 @@ func (h *packetHandlerMap) GetStatelessResetToken(connID protocol.ConnectionID)
rand.Read(token[:])
return token
}
h.statelessResetMutex.Lock()
h.statelessResetHasher.Write(connID.Bytes())
copy(token[:], h.statelessResetHasher.Sum(nil))
h.statelessResetHasher.Reset()
h.statelessResetMutex.Unlock()
return token
}