be more explicit about ignoring errors in the packet number generator

This commit is contained in:
Marten Seemann
2018-10-14 20:15:50 +02:00
parent 225106b58c
commit 788dbeb686
2 changed files with 6 additions and 16 deletions

View File

@@ -42,28 +42,19 @@ func (p *packetNumberGenerator) Pop() protocol.PacketNumber {
return next
}
func (p *packetNumberGenerator) generateNewSkip() error {
num, err := p.getRandomNumber()
if err != nil {
return err
}
func (p *packetNumberGenerator) generateNewSkip() {
num := p.getRandomNumber()
skip := protocol.PacketNumber(num) * (p.averagePeriod - 1) / (math.MaxUint16 / 2)
// make sure that there are never two consecutive packet numbers that are skipped
p.nextToSkip = p.next + 2 + skip
return nil
}
// getRandomNumber() generates a cryptographically secure random number between 0 and MaxUint16 (= 65535)
// The expectation value is 65535/2
func (p *packetNumberGenerator) getRandomNumber() (uint16, error) {
func (p *packetNumberGenerator) getRandomNumber() uint16 {
b := make([]byte, 2)
_, err := rand.Read(b)
if err != nil {
return 0, err
}
rand.Read(b) // ignore the error here
num := uint16(b[0])<<8 + uint16(b[1])
return num, nil
return num
}

View File

@@ -69,8 +69,7 @@ var _ = Describe("Packet Number Generator", func() {
rep := 10000
for i := 0; i < rep; i++ {
num, err := png.getRandomNumber()
Expect(err).ToNot(HaveOccurred())
num := png.getRandomNumber()
sum += uint64(num)
if num > largest {
largest = num