forked from quic-go/quic-go
Merge pull request #1647 from lucas-clemente/remove-packet-packer-cansenddata
remove unneeded check if stream data can be sent in packet packer
This commit is contained in:
@@ -279,7 +279,7 @@ func (p *packetPacker) PackPacket() (*packedPacket, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
maxSize := p.maxPacketSize - protocol.ByteCount(sealer.Overhead()) - headerLen
|
maxSize := p.maxPacketSize - protocol.ByteCount(sealer.Overhead()) - headerLen
|
||||||
frames, err := p.composeNextPacket(maxSize, p.canSendData(encLevel))
|
frames, err := p.composeNextPacket(maxSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -351,10 +351,7 @@ func (p *packetPacker) maybePackCryptoPacket() (*packedPacket, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *packetPacker) composeNextPacket(
|
func (p *packetPacker) composeNextPacket(maxFrameSize protocol.ByteCount) ([]wire.Frame, error) {
|
||||||
maxFrameSize protocol.ByteCount,
|
|
||||||
canSendStreamFrames bool,
|
|
||||||
) ([]wire.Frame, error) {
|
|
||||||
var length protocol.ByteCount
|
var length protocol.ByteCount
|
||||||
var frames []wire.Frame
|
var frames []wire.Frame
|
||||||
|
|
||||||
@@ -368,10 +365,6 @@ func (p *packetPacker) composeNextPacket(
|
|||||||
frames, lengthAdded = p.framer.AppendControlFrames(frames, maxFrameSize-length)
|
frames, lengthAdded = p.framer.AppendControlFrames(frames, maxFrameSize-length)
|
||||||
length += lengthAdded
|
length += lengthAdded
|
||||||
|
|
||||||
if !canSendStreamFrames {
|
|
||||||
return frames, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// temporarily increase the maxFrameSize by the (minimum) length of the DataLen field
|
// temporarily increase the maxFrameSize by the (minimum) length of the DataLen field
|
||||||
// this leads to a properly sized packet in all cases, since we do all the packet length calculations with STREAM frames that have the DataLen set
|
// this leads to a properly sized packet in all cases, since we do all the packet length calculations with STREAM frames that have the DataLen set
|
||||||
// however, for the last STREAM frame in the packet, we can omit the DataLen, thus yielding a packet of exactly the correct size
|
// however, for the last STREAM frame in the packet, we can omit the DataLen, thus yielding a packet of exactly the correct size
|
||||||
@@ -478,10 +471,6 @@ func (p *packetPacker) writeAndSealPacket(
|
|||||||
return raw, nil
|
return raw, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *packetPacker) canSendData(encLevel protocol.EncryptionLevel) bool {
|
|
||||||
return encLevel == protocol.Encryption1RTT
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *packetPacker) ChangeDestConnectionID(connID protocol.ConnectionID) {
|
func (p *packetPacker) ChangeDestConnectionID(connID protocol.ConnectionID) {
|
||||||
p.destConnID = connID
|
p.destConnID = connID
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -428,17 +428,6 @@ var _ = Describe("Packet packer", func() {
|
|||||||
Expect(p.frames[2].(*wire.StreamFrame).Data).To(Equal([]byte("frame 3")))
|
Expect(p.frames[2].(*wire.StreamFrame).Data).To(Equal([]byte("frame 3")))
|
||||||
Expect(p.frames[2].(*wire.StreamFrame).DataLenPresent).To(BeFalse())
|
Expect(p.frames[2].(*wire.StreamFrame).DataLenPresent).To(BeFalse())
|
||||||
})
|
})
|
||||||
|
|
||||||
It("doesn't send unencrypted stream data on a data stream", func() {
|
|
||||||
pnManager.EXPECT().PeekPacketNumber().Return(protocol.PacketNumber(0x42), protocol.PacketNumberLen2)
|
|
||||||
sealingManager.EXPECT().GetSealer().Return(protocol.EncryptionInitial, sealer)
|
|
||||||
ackFramer.EXPECT().GetAckFrame()
|
|
||||||
expectAppendControlFrames()
|
|
||||||
// don't expect a call to framer.PopStreamFrames
|
|
||||||
p, err := packer.PackPacket()
|
|
||||||
Expect(err).NotTo(HaveOccurred())
|
|
||||||
Expect(p).To(BeNil())
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("retransmissions", func() {
|
Context("retransmissions", func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user