From 7d2922d7ab7d7a35c2a09014b1c6ec689928af50 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sat, 25 Feb 2017 15:30:25 +0700 Subject: [PATCH] save the encryption level of a sent packet in the SentPacketHandler --- ackhandler/packet.go | 7 ++++--- session.go | 7 ++++--- session_test.go | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ackhandler/packet.go b/ackhandler/packet.go index d748547e8..172188540 100644 --- a/ackhandler/packet.go +++ b/ackhandler/packet.go @@ -10,9 +10,10 @@ import ( // A Packet is a packet // +gen linkedlist type Packet struct { - PacketNumber protocol.PacketNumber - Frames []frames.Frame - Length protocol.ByteCount + PacketNumber protocol.PacketNumber + Frames []frames.Frame + Length protocol.ByteCount + EncryptionLevel protocol.EncryptionLevel MissingReports uint8 diff --git a/session.go b/session.go index c9d312394..c3f9efd6f 100644 --- a/session.go +++ b/session.go @@ -623,9 +623,10 @@ func (s *session) sendPacket() error { } err = s.sentPacketHandler.SentPacket(&ackhandler.Packet{ - PacketNumber: packet.number, - Frames: packet.frames, - Length: protocol.ByteCount(len(packet.raw)), + PacketNumber: packet.number, + Frames: packet.frames, + Length: protocol.ByteCount(len(packet.raw)), + EncryptionLevel: packet.encryptionLevel, }) if err != nil { return err diff --git a/session_test.go b/session_test.go index 07b8eecb6..0075a3d47 100644 --- a/session_test.go +++ b/session_test.go @@ -800,6 +800,28 @@ var _ = Describe("Session", func() { Expect(mconn.written).To(HaveLen(1)) Expect(mconn.written[0]).To(ContainSubstring(string([]byte("PRST")))) }) + + It("informs the SentPacketHandler about sent packets", func() { + sess.sentPacketHandler = newMockSentPacketHandler() + sess.packer.packetNumberGenerator.next = 0x1337 + 9 + sess.packer.cryptoSetup = &mockCryptoSetup{encLevelSeal: protocol.EncryptionSecure} + + f := &frames.StreamFrame{ + StreamID: 5, + Data: []byte("foobar"), + } + sess.streamFramer.AddFrameForRetransmission(f) + _, err := sess.GetOrOpenStream(5) + Expect(err).ToNot(HaveOccurred()) + err = sess.sendPacket() + Expect(err).NotTo(HaveOccurred()) + Expect(mconn.written).To(HaveLen(1)) + sentPackets := sess.sentPacketHandler.(*mockSentPacketHandler).sentPackets + Expect(sentPackets).To(HaveLen(1)) + Expect(sentPackets[0].Frames).To(ContainElement(f)) + Expect(sentPackets[0].EncryptionLevel).To(Equal(protocol.EncryptionSecure)) + Expect(sentPackets[0].Length).To(BeEquivalentTo(len(mconn.written[0]))) + }) }) Context("retransmissions", func() {