diff --git a/ackhandler/interfaces.go b/ackhandler/interfaces.go index 6b2810e8..8492fd4c 100644 --- a/ackhandler/interfaces.go +++ b/ackhandler/interfaces.go @@ -11,7 +11,7 @@ import ( type SentPacketHandler interface { // SentPacket may modify the packet SentPacket(packet *Packet) error - ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, recvTime time.Time) error + ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, encLevel protocol.EncryptionLevel, recvTime time.Time) error SetHandshakeComplete() SendingAllowed() bool diff --git a/ackhandler/sent_packet_handler.go b/ackhandler/sent_packet_handler.go index 598d4e89..68267aa4 100644 --- a/ackhandler/sent_packet_handler.go +++ b/ackhandler/sent_packet_handler.go @@ -152,7 +152,7 @@ func (h *sentPacketHandler) SentPacket(packet *Packet) error { return nil } -func (h *sentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, rcvTime time.Time) error { +func (h *sentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, encLevel protocol.EncryptionLevel, rcvTime time.Time) error { if ackFrame.LargestAcked > h.lastSentPacketNumber { return errAckForUnsentPacket } @@ -186,6 +186,9 @@ func (h *sentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumbe if len(ackedPackets) > 0 { for _, p := range ackedPackets { + if encLevel < p.Value.EncryptionLevel { + return fmt.Errorf("Received ACK with encryption level %s that acks a packet %d (encryption level %s)", encLevel, p.Value.PacketNumber, p.Value.EncryptionLevel) + } h.onPacketAcked(p) h.congestion.OnPacketAcked(p.Value.PacketNumber, p.Value.Length, h.bytesInFlight) } diff --git a/ackhandler/sent_packet_handler_test.go b/ackhandler/sent_packet_handler_test.go index dbadd0b1..7d073c31 100644 --- a/ackhandler/sent_packet_handler_test.go +++ b/ackhandler/sent_packet_handler_test.go @@ -312,10 +312,10 @@ var _ = Describe("SentPacketHandler", func() { LargestAcked: protocol.PacketNumber(largestAcked), LowestAcked: 1, } - err := handler.ReceivedAck(&ack, 1337, time.Now()) + err := handler.ReceivedAck(&ack, 1337, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 3))) - err = handler.ReceivedAck(&ack, 1337, time.Now()) + err = handler.ReceivedAck(&ack, 1337, protocol.EncryptionUnencrypted, time.Now()) Expect(err).To(MatchError(ErrDuplicateOrOutOfOrderAck)) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 3))) }) @@ -324,10 +324,10 @@ var _ = Describe("SentPacketHandler", func() { ack := wire.AckFrame{ LargestAcked: 3, } - err := handler.ReceivedAck(&ack, 1337, time.Now()) + err := handler.ReceivedAck(&ack, 1337, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 3))) - err = handler.ReceivedAck(&ack, 1337-1, time.Now()) + err = handler.ReceivedAck(&ack, 1337-1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).To(MatchError(ErrDuplicateOrOutOfOrderAck)) Expect(handler.LargestAcked).To(Equal(protocol.PacketNumber(3))) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 3))) @@ -337,7 +337,7 @@ var _ = Describe("SentPacketHandler", func() { ack := wire.AckFrame{ LargestAcked: packets[len(packets)-1].PacketNumber + 1337, } - err := handler.ReceivedAck(&ack, 1, time.Now()) + err := handler.ReceivedAck(&ack, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).To(MatchError(errAckForUnsentPacket)) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets)))) }) @@ -347,10 +347,10 @@ var _ = Describe("SentPacketHandler", func() { LargestAcked: 3, LowestAcked: 1, } - err := handler.ReceivedAck(&ack, 1337, time.Now()) + err := handler.ReceivedAck(&ack, 1337, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 3))) - err = handler.ReceivedAck(&ack, 1337+1, time.Now()) + err = handler.ReceivedAck(&ack, 1337+1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.LargestAcked).To(Equal(protocol.PacketNumber(3))) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 3))) @@ -361,7 +361,7 @@ var _ = Describe("SentPacketHandler", func() { LargestAcked: 12, LowestAcked: 5, } - err := handler.ReceivedAck(&ack, 1337, time.Now()) + err := handler.ReceivedAck(&ack, 1337, protocol.EncryptionUnencrypted, time.Now()) Expect(err).To(MatchError(ErrAckForSkippedPacket)) }) @@ -374,7 +374,7 @@ var _ = Describe("SentPacketHandler", func() { {First: 5, Last: 10}, }, } - err := handler.ReceivedAck(&ack, 1337, time.Now()) + err := handler.ReceivedAck(&ack, 1337, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.LargestAcked).ToNot(BeZero()) }) @@ -386,7 +386,7 @@ var _ = Describe("SentPacketHandler", func() { LargestAcked: 5, LowestAcked: 1, } - err := handler.ReceivedAck(&ack, 1, time.Now()) + err := handler.ReceivedAck(&ack, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.LargestAcked).To(Equal(protocol.PacketNumber(5))) el := handler.packetHistory.Front() @@ -397,12 +397,28 @@ var _ = Describe("SentPacketHandler", func() { Expect(el.Value.PacketNumber).To(Equal(protocol.PacketNumber(12))) }) + It("rejects an ACK that acks packets with a higher encryption level", func() { + err := handler.SentPacket(&Packet{ + PacketNumber: 13, + EncryptionLevel: protocol.EncryptionForwardSecure, + Frames: []wire.Frame{&streamFrame}, + Length: 1, + }) + ack := wire.AckFrame{ + LargestAcked: 13, + LowestAcked: 13, + } + Expect(err).ToNot(HaveOccurred()) + err = handler.ReceivedAck(&ack, 1, protocol.EncryptionSecure, time.Now()) + Expect(err).To(MatchError("Received ACK with encryption level encrypted (not forward-secure) that acks a packet 13 (encryption level forward-secure)")) + }) + It("ACKs all packets for an ACK frame with no missing packets", func() { ack := wire.AckFrame{ LargestAcked: 8, LowestAcked: 2, } - err := handler.ReceivedAck(&ack, 1, time.Now()) + err := handler.ReceivedAck(&ack, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) el := handler.packetHistory.Front() Expect(el.Value.PacketNumber).To(Equal(protocol.PacketNumber(1))) @@ -422,7 +438,7 @@ var _ = Describe("SentPacketHandler", func() { {First: 2, Last: 3}, }, } - err := handler.ReceivedAck(&ack, 1, time.Now()) + err := handler.ReceivedAck(&ack, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) el := handler.packetHistory.Front() Expect(el.Value.PacketNumber).To(Equal(protocol.PacketNumber(1))) @@ -435,12 +451,12 @@ var _ = Describe("SentPacketHandler", func() { Expect(el.Next().Value.PacketNumber).To(Equal(protocol.PacketNumber(12))) }) - It("Does not ack packets below the LowestAcked", func() { + It("does not ack packets below the LowestAcked", func() { ack := wire.AckFrame{ LargestAcked: 8, LowestAcked: 3, } - err := handler.ReceivedAck(&ack, 1, time.Now()) + err := handler.ReceivedAck(&ack, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) el := handler.packetHistory.Front() Expect(el.Value.PacketNumber).To(Equal(protocol.PacketNumber(1))) @@ -460,7 +476,7 @@ var _ = Describe("SentPacketHandler", func() { {First: 1, Last: 1}, }, } - err := handler.ReceivedAck(&ack, 1, time.Now()) + err := handler.ReceivedAck(&ack, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) el := handler.packetHistory.Front() Expect(el.Value.PacketNumber).To(Equal(protocol.PacketNumber(2))) @@ -484,7 +500,7 @@ var _ = Describe("SentPacketHandler", func() { {First: 1, Last: 2}, }, } - err := handler.ReceivedAck(&ack1, 1, time.Now()) + err := handler.ReceivedAck(&ack1, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 5))) el := handler.packetHistory.Front() @@ -493,7 +509,7 @@ var _ = Describe("SentPacketHandler", func() { LargestAcked: protocol.PacketNumber(largestObserved), LowestAcked: 1, } - err = handler.ReceivedAck(&ack2, 2, time.Now()) + err = handler.ReceivedAck(&ack2, 2, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 6))) Expect(handler.packetHistory.Front().Value.PacketNumber).To(Equal(protocol.PacketNumber(7))) @@ -508,7 +524,7 @@ var _ = Describe("SentPacketHandler", func() { {First: 1, Last: 2}, }, } - err := handler.ReceivedAck(&ack1, 1, time.Now()) + err := handler.ReceivedAck(&ack1, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 5))) el := handler.packetHistory.Front() @@ -517,7 +533,7 @@ var _ = Describe("SentPacketHandler", func() { LargestAcked: 7, LowestAcked: 1, } - err = handler.ReceivedAck(&ack2, 2, time.Now()) + err = handler.ReceivedAck(&ack2, 2, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 7))) Expect(handler.packetHistory.Front().Value.PacketNumber).To(Equal(protocol.PacketNumber(8))) @@ -528,7 +544,7 @@ var _ = Describe("SentPacketHandler", func() { LargestAcked: 6, LowestAcked: 1, } - err := handler.ReceivedAck(&ack1, 1, time.Now()) + err := handler.ReceivedAck(&ack1, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.packetHistory.Front().Value.PacketNumber).To(Equal(protocol.PacketNumber(7))) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 6))) @@ -541,7 +557,7 @@ var _ = Describe("SentPacketHandler", func() { {First: 1, Last: 1}, }, } - err = handler.ReceivedAck(&ack2, 2, time.Now()) + err = handler.ReceivedAck(&ack2, 2, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(len(packets) - 6 - 3))) Expect(handler.packetHistory.Front().Value.PacketNumber).To(Equal(protocol.PacketNumber(7))) @@ -557,13 +573,13 @@ var _ = Describe("SentPacketHandler", func() { getPacketElement(2).Value.SendTime = now.Add(-5 * time.Minute) getPacketElement(6).Value.SendTime = now.Add(-1 * time.Minute) // Now, check that the proper times are used when calculating the deltas - err := handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1}, 1, time.Now()) + err := handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1}, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).NotTo(HaveOccurred()) Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 10*time.Minute, 1*time.Second)) - err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 2}, 2, time.Now()) + err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 2}, 2, protocol.EncryptionUnencrypted, time.Now()) Expect(err).NotTo(HaveOccurred()) Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 5*time.Minute, 1*time.Second)) - err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 6}, 3, time.Now()) + err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 6}, 3, protocol.EncryptionUnencrypted, time.Now()) Expect(err).NotTo(HaveOccurred()) Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 1*time.Minute, 1*time.Second)) }) @@ -571,7 +587,7 @@ var _ = Describe("SentPacketHandler", func() { It("uses the DelayTime in the ack frame", func() { now := time.Now() getPacketElement(1).Value.SendTime = now.Add(-10 * time.Minute) - err := handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, DelayTime: 5 * time.Minute}, 1, time.Now()) + err := handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, DelayTime: 5 * time.Minute}, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).NotTo(HaveOccurred()) Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 5*time.Minute, 1*time.Second)) }) @@ -597,7 +613,7 @@ var _ = Describe("SentPacketHandler", func() { // Increase RTT, because the tests would be flaky otherwise handler.rttStats.UpdateRTT(time.Minute, 0, time.Now()) // Ack a single packet so that we have non-RTO timings - handler.ReceivedAck(&wire.AckFrame{LargestAcked: 2, LowestAcked: 2}, 1, time.Now()) + handler.ReceivedAck(&wire.AckFrame{LargestAcked: 2, LowestAcked: 2}, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(6))) }) @@ -620,7 +636,7 @@ var _ = Describe("SentPacketHandler", func() { Context("StopWaitings", func() { It("gets a StopWaitingFrame", func() { ack := wire.AckFrame{LargestAcked: 5, LowestAcked: 5} - err := handler.ReceivedAck(&ack, 2, time.Now()) + err := handler.ReceivedAck(&ack, 2, protocol.EncryptionUnencrypted, time.Now()) Expect(err).ToNot(HaveOccurred()) Expect(handler.GetStopWaitingFrame(false)).To(Equal(&wire.StopWaitingFrame{LeastUnacked: 6})) }) @@ -658,7 +674,7 @@ var _ = Describe("SentPacketHandler", func() { {First: 1, Last: 1}, }, } - err = handler.ReceivedAck(&ack, 1, time.Now()) + err = handler.ReceivedAck(&ack, 1, protocol.EncryptionUnencrypted, time.Now()) Expect(err).NotTo(HaveOccurred()) Expect(handler.bytesInFlight).To(Equal(protocol.ByteCount(2))) @@ -695,7 +711,7 @@ var _ = Describe("SentPacketHandler", func() { It("should call MaybeExitSlowStart and OnPacketAcked", func() { handler.SentPacket(retransmittablePacket(1)) handler.SentPacket(retransmittablePacket(2)) - err := handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, LowestAcked: 1}, 1, time.Now()) + err := handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, LowestAcked: 1}, 1, protocol.EncryptionForwardSecure, time.Now()) Expect(err).NotTo(HaveOccurred()) Expect(cong.maybeExitSlowStart).To(BeTrue()) Expect(cong.packetsAcked).To(BeEquivalentTo([][]interface{}{ @@ -790,7 +806,7 @@ var _ = Describe("SentPacketHandler", func() { Expect(err).NotTo(HaveOccurred()) Expect(handler.lossTime.IsZero()).To(BeTrue()) - err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 2, LowestAcked: 2}, 1, time.Now().Add(time.Hour)) + err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 2, LowestAcked: 2}, 1, protocol.EncryptionForwardSecure, time.Now().Add(time.Hour)) Expect(err).NotTo(HaveOccurred()) Expect(handler.lossTime.IsZero()).To(BeFalse()) @@ -813,7 +829,7 @@ var _ = Describe("SentPacketHandler", func() { Expect(err).NotTo(HaveOccurred()) Expect(handler.lossTime.IsZero()).To(BeTrue()) - err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, LowestAcked: 1}, 1, time.Now().Add(time.Hour)) + err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, LowestAcked: 1}, 1, protocol.EncryptionUnencrypted, time.Now().Add(time.Hour)) Expect(err).NotTo(HaveOccurred()) Expect(handler.lossTime.IsZero()).To(BeTrue()) Expect(handler.GetAlarmTimeout().Sub(time.Now())).To(BeNumerically("~", handler.computeRTOTimeout(), time.Minute)) @@ -843,7 +859,7 @@ var _ = Describe("SentPacketHandler", func() { err = handler.SentPacket(handshakePacket(4)) Expect(err).ToNot(HaveOccurred()) - err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, LowestAcked: 1}, 1, time.Now().Add(time.Hour)) + err = handler.ReceivedAck(&wire.AckFrame{LargestAcked: 1, LowestAcked: 1}, 1, protocol.EncryptionSecure, time.Now().Add(time.Hour)) Expect(err).NotTo(HaveOccurred()) Expect(handler.lossTime.IsZero()).To(BeTrue()) handshakeTimeout := handler.computeHandshakeTimeout() diff --git a/session.go b/session.go index cf1ac88c..06d6916f 100644 --- a/session.go +++ b/session.go @@ -469,10 +469,10 @@ func (s *session) handlePacketImpl(p *receivedPacket) error { return err } - return s.handleFrames(packet.frames) + return s.handleFrames(packet.frames, packet.encryptionLevel) } -func (s *session) handleFrames(fs []wire.Frame) error { +func (s *session) handleFrames(fs []wire.Frame, encLevel protocol.EncryptionLevel) error { for _, ff := range fs { var err error wire.LogFrame(ff, false) @@ -480,7 +480,7 @@ func (s *session) handleFrames(fs []wire.Frame) error { case *wire.StreamFrame: err = s.handleStreamFrame(frame) case *wire.AckFrame: - err = s.handleAckFrame(frame) + err = s.handleAckFrame(frame, encLevel) case *wire.ConnectionCloseFrame: s.closeRemote(qerr.Error(frame.ErrorCode, frame.ReasonPhrase)) case *wire.GoawayFrame: @@ -572,8 +572,8 @@ func (s *session) handleRstStreamFrame(frame *wire.RstStreamFrame) error { return str.RegisterRemoteError(fmt.Errorf("RST_STREAM received with code %d", frame.ErrorCode), frame.ByteOffset) } -func (s *session) handleAckFrame(frame *wire.AckFrame) error { - return s.sentPacketHandler.ReceivedAck(frame, s.lastRcvdPacketNumber, s.lastNetworkActivityTime) +func (s *session) handleAckFrame(frame *wire.AckFrame, encLevel protocol.EncryptionLevel) error { + return s.sentPacketHandler.ReceivedAck(frame, s.lastRcvdPacketNumber, encLevel, s.lastNetworkActivityTime) } func (s *session) closeLocal(e error) { diff --git a/session_test.go b/session_test.go index f31163d9..c847b9de 100644 --- a/session_test.go +++ b/session_test.go @@ -82,7 +82,8 @@ func (h *mockSentPacketHandler) SentPacket(packet *ackhandler.Packet) error { h.sentPackets = append(h.sentPackets, packet) return nil } -func (h *mockSentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, recvTime time.Time) error { + +func (h *mockSentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, encLevel protocol.EncryptionLevel, recvTime time.Time) error { return nil } func (h *mockSentPacketHandler) SetHandshakeComplete() {} @@ -380,7 +381,7 @@ var _ = Describe("Session", func() { err = sess.handleFrames([]wire.Frame{&wire.RstStreamFrame{ StreamID: 3, ErrorCode: 42, - }}) + }}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) }) }) @@ -442,28 +443,28 @@ var _ = Describe("Session", func() { err = sess.handleFrames([]wire.Frame{&wire.MaxStreamDataFrame{ StreamID: 3, ByteOffset: 1337, - }}) + }}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) }) }) It("handles PING frames", func() { - err := sess.handleFrames([]wire.Frame{&wire.PingFrame{}}) + err := sess.handleFrames([]wire.Frame{&wire.PingFrame{}}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) }) It("handles BLOCKED frames", func() { - err := sess.handleFrames([]wire.Frame{&wire.BlockedFrame{}}) + err := sess.handleFrames([]wire.Frame{&wire.BlockedFrame{}}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) }) It("errors on GOAWAY frames", func() { - err := sess.handleFrames([]wire.Frame{&wire.GoawayFrame{}}) + err := sess.handleFrames([]wire.Frame{&wire.GoawayFrame{}}, protocol.EncryptionUnspecified) Expect(err).To(MatchError("unimplemented: handling GOAWAY frames")) }) It("handles STOP_WAITING frames", func() { - err := sess.handleFrames([]wire.Frame{&wire.StopWaitingFrame{LeastUnacked: 10}}) + err := sess.handleFrames([]wire.Frame{&wire.StopWaitingFrame{LeastUnacked: 10}}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) }) @@ -483,7 +484,7 @@ var _ = Describe("Session", func() { sess.streamsMap.Range(func(s streamI) { s.(*mocks.MockStreamI).EXPECT().Cancel(gomock.Any()) }) - err = sess.handleFrames([]wire.Frame{&wire.ConnectionCloseFrame{ErrorCode: qerr.ProofInvalid, ReasonPhrase: "foobar"}}) + err = sess.handleFrames([]wire.Frame{&wire.ConnectionCloseFrame{ErrorCode: qerr.ProofInvalid, ReasonPhrase: "foobar"}}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) Eventually(sess.Context().Done()).Should(BeClosed()) Eventually(done).Should(BeClosed()) @@ -1453,11 +1454,11 @@ var _ = Describe("Session", func() { }) err := sess.handleFrames([]wire.Frame{&wire.AckFrame{ LargestAcked: 1, - }}) + }}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) err = sess.handleFrames([]wire.Frame{&wire.AckFrame{ LargestAcked: 1, - }}) + }}, protocol.EncryptionUnspecified) Expect(err).NotTo(HaveOccurred()) }) })