diff --git a/packet_packer.go b/packet_packer.go index 6193921bf..b2a50783d 100644 --- a/packet_packer.go +++ b/packet_packer.go @@ -96,7 +96,6 @@ type packetPacker struct { acks ackFrameSource maxPacketSize protocol.ByteCount - hasSentPacket bool // has the packetPacker already sent a packet numNonRetransmittableAcks int } @@ -250,10 +249,6 @@ func (p *packetPacker) packHandshakeRetransmission(packet *ackhandler.Packet) (* if err != nil { return nil, err } - // make sure that the retransmission for an Initial packet is sent as an Initial packet - if packet.PacketType == protocol.PacketTypeInitial { - p.hasSentPacket = false - } header := p.getHeader(packet.EncryptionLevel) header.Type = packet.PacketType raw, err := p.writeAndSealPacket(header, packet.Frames, sealer) @@ -275,10 +270,6 @@ func (p *packetPacker) PackPacket() (*packedPacket, error) { if packet != nil { return packet, nil } - // if this is the first packet to be send, make sure it contains stream data - if !p.hasSentPacket && packet == nil { - return nil, nil - } encLevel, sealer := p.cryptoSetup.GetSealer() header := p.getHeader(encLevel) @@ -484,7 +475,6 @@ func (p *packetPacker) writeAndSealPacket( if num != header.PacketNumber { return nil, errors.New("packetPacker BUG: Peeked and Popped packet numbers do not match") } - p.hasSentPacket = true return raw, nil } diff --git a/packet_packer_test.go b/packet_packer_test.go index 3d2cab68c..dccde3fbf 100644 --- a/packet_packer_test.go +++ b/packet_packer_test.go @@ -88,7 +88,6 @@ var _ = Describe("Packet packer", func() { protocol.PerspectiveServer, version, ) - packer.hasSentPacket = true packer.version = version packer.maxPacketSize = maxPacketSize }) @@ -712,7 +711,6 @@ var _ = Describe("Packet packer", func() { ackFramer.EXPECT().GetAckFrame() initialStream.EXPECT().HasData().Return(true) initialStream.EXPECT().PopCryptoFrame(gomock.Any()).Return(f) - packer.hasSentPacket = false packer.perspective = protocol.PerspectiveClient packet, err := packer.PackPacket() Expect(err).ToNot(HaveOccurred()) @@ -732,7 +730,6 @@ var _ = Describe("Packet packer", func() { initialStream.EXPECT().PopCryptoFrame(gomock.Any()).Return(&wire.CryptoFrame{ Data: []byte("foobar"), }) - packer.hasSentPacket = false packer.perspective = protocol.PerspectiveClient packet, err := packer.PackPacket() Expect(err).ToNot(HaveOccurred()) @@ -749,7 +746,6 @@ var _ = Describe("Packet packer", func() { initialStream.EXPECT().HasData().Return(true) initialStream.EXPECT().PopCryptoFrame(gomock.Any()).Return(f) packer.version = protocol.VersionTLS - packer.hasSentPacket = false packer.perspective = protocol.PerspectiveClient packet, err := packer.PackPacket() Expect(err).ToNot(HaveOccurred()) @@ -807,13 +803,15 @@ var _ = Describe("Packet packer", func() { EncryptionLevel: protocol.EncryptionInitial, Frames: []wire.Frame{sf}, } - p, err := packer.PackRetransmission(packet) + packets, err := packer.PackRetransmission(packet) Expect(err).ToNot(HaveOccurred()) - Expect(p).To(HaveLen(1)) - Expect(p[0].frames).To(Equal([]wire.Frame{sf})) - Expect(p[0].encryptionLevel).To(Equal(protocol.EncryptionInitial)) - Expect(p[0].header.Type).To(Equal(protocol.PacketTypeInitial)) - Expect(p[0].header.Token).To(Equal(token)) + Expect(packets).To(HaveLen(1)) + p := packets[0] + Expect(p.frames).To(Equal([]wire.Frame{sf})) + Expect(p.encryptionLevel).To(Equal(protocol.EncryptionInitial)) + Expect(p.header.Type).To(Equal(protocol.PacketTypeInitial)) + Expect(p.header.Token).To(Equal(token)) + Expect(p.raw).To(HaveLen(protocol.MinInitialPacketSize)) }) }) })