forked from quic-go/quic-go
fix race condition in the crypto setup tests
This commit is contained in:
@@ -263,8 +263,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Context("doing the handshake", func() {
|
Context("doing the handshake", func() {
|
||||||
var testDone chan struct{}
|
|
||||||
|
|
||||||
generateCert := func() tls.Certificate {
|
generateCert := func() tls.Certificate {
|
||||||
priv, err := rsa.GenerateKey(rand.Reader, 2048)
|
priv, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@@ -284,14 +282,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BeforeEach(func() {
|
|
||||||
testDone = make(chan struct{})
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
close(testDone)
|
|
||||||
})
|
|
||||||
|
|
||||||
handshake := func(client CryptoSetup, cChunkChan <-chan chunk,
|
handshake := func(client CryptoSetup, cChunkChan <-chan chunk,
|
||||||
server CryptoSetup, sChunkChan <-chan chunk) {
|
server CryptoSetup, sChunkChan <-chan chunk) {
|
||||||
done := make(chan struct{})
|
done := make(chan struct{})
|
||||||
@@ -303,7 +293,7 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
server.HandleMessage(c.data, c.encLevel)
|
server.HandleMessage(c.data, c.encLevel)
|
||||||
case c := <-sChunkChan:
|
case c := <-sChunkChan:
|
||||||
client.HandleMessage(c.data, c.encLevel)
|
client.HandleMessage(c.data, c.encLevel)
|
||||||
case <-testDone: // handshake complete
|
case <-done: // handshake complete
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -311,13 +301,13 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer GinkgoRecover()
|
defer GinkgoRecover()
|
||||||
|
defer close(done)
|
||||||
server.RunHandshake()
|
server.RunHandshake()
|
||||||
ticket, err := server.GetSessionTicket()
|
ticket, err := server.GetSessionTicket()
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
if ticket != nil {
|
if ticket != nil {
|
||||||
client.HandleMessage(ticket, protocol.Encryption1RTT)
|
client.HandleMessage(ticket, protocol.Encryption1RTT)
|
||||||
}
|
}
|
||||||
close(done)
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
client.RunHandshake()
|
client.RunHandshake()
|
||||||
|
|||||||
Reference in New Issue
Block a user