forked from quic-go/quic-go
remove unneeded check if stream data can be sent in packet packer
We don't return the session before the handshake completes, so there shouldn't be any stream data to send.
This commit is contained in:
@@ -288,7 +288,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
|
||||||
}
|
}
|
||||||
@@ -360,10 +360,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
|
||||||
|
|
||||||
@@ -377,10 +374,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
|
||||||
@@ -488,10 +481,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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -429,17 +429,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