forked from quic-go/quic-go
change composeNextPacket function signature in packetPacker
This commit is contained in:
@@ -104,7 +104,8 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, lea
|
|||||||
if isConnectionClose {
|
if isConnectionClose {
|
||||||
payloadFrames = []frames.Frame{p.controlFrames[0]}
|
payloadFrames = []frames.Frame{p.controlFrames[0]}
|
||||||
} else {
|
} else {
|
||||||
payloadFrames, err = p.composeNextPacket(stopWaitingFrame, publicHeaderLength)
|
maxSize := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLength
|
||||||
|
payloadFrames, err = p.composeNextPacket(stopWaitingFrame, maxSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -164,12 +165,10 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, lea
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *packetPacker) composeNextPacket(stopWaitingFrame *frames.StopWaitingFrame, publicHeaderLength protocol.ByteCount) ([]frames.Frame, error) {
|
func (p *packetPacker) composeNextPacket(stopWaitingFrame *frames.StopWaitingFrame, maxFrameSize protocol.ByteCount) ([]frames.Frame, error) {
|
||||||
var payloadLength protocol.ByteCount
|
var payloadLength protocol.ByteCount
|
||||||
var payloadFrames []frames.Frame
|
var payloadFrames []frames.Frame
|
||||||
|
|
||||||
maxFrameSize := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLength
|
|
||||||
|
|
||||||
if stopWaitingFrame != nil {
|
if stopWaitingFrame != nil {
|
||||||
payloadFrames = append(payloadFrames, stopWaitingFrame)
|
payloadFrames = append(payloadFrames, stopWaitingFrame)
|
||||||
minLength, err := stopWaitingFrame.MinLength(p.version)
|
minLength, err := stopWaitingFrame.MinLength(p.version)
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ var _ = Describe("Packet packer", func() {
|
|||||||
var (
|
var (
|
||||||
packer *packetPacker
|
packer *packetPacker
|
||||||
publicHeaderLen protocol.ByteCount
|
publicHeaderLen protocol.ByteCount
|
||||||
|
maxFrameSize protocol.ByteCount
|
||||||
streamFramer *streamFramer
|
streamFramer *streamFramer
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -57,6 +58,7 @@ var _ = Describe("Packet packer", func() {
|
|||||||
perspective: protocol.PerspectiveServer,
|
perspective: protocol.PerspectiveServer,
|
||||||
}
|
}
|
||||||
publicHeaderLen = 1 + 8 + 2 // 1 flag byte, 8 connection ID, 2 packet number
|
publicHeaderLen = 1 + 8 + 2 // 1 flag byte, 8 connection ID, 2 packet number
|
||||||
|
maxFrameSize = protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen
|
||||||
packer.version = protocol.Version34
|
packer.version = protocol.Version34
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -222,10 +224,10 @@ var _ = Describe("Packet packer", func() {
|
|||||||
controlFrames = append(controlFrames, f)
|
controlFrames = append(controlFrames, f)
|
||||||
}
|
}
|
||||||
packer.controlFrames = controlFrames
|
packer.controlFrames = controlFrames
|
||||||
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(maxFramesPerPacket))
|
Expect(payloadFrames).To(HaveLen(maxFramesPerPacket))
|
||||||
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(BeEmpty())
|
Expect(payloadFrames).To(BeEmpty())
|
||||||
})
|
})
|
||||||
@@ -241,10 +243,10 @@ var _ = Describe("Packet packer", func() {
|
|||||||
controlFrames = append(controlFrames, blockedFrame)
|
controlFrames = append(controlFrames, blockedFrame)
|
||||||
}
|
}
|
||||||
packer.controlFrames = controlFrames
|
packer.controlFrames = controlFrames
|
||||||
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(maxFramesPerPacket))
|
Expect(payloadFrames).To(HaveLen(maxFramesPerPacket))
|
||||||
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(10))
|
Expect(payloadFrames).To(HaveLen(10))
|
||||||
})
|
})
|
||||||
@@ -275,14 +277,14 @@ var _ = Describe("Packet packer", func() {
|
|||||||
DataLenPresent: false,
|
DataLenPresent: false,
|
||||||
}
|
}
|
||||||
minLength, _ := f.MinLength(0)
|
minLength, _ := f.MinLength(0)
|
||||||
maxStreamFrameDataLen := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen - minLength
|
maxStreamFrameDataLen := maxFrameSize - minLength
|
||||||
f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen))
|
f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen))
|
||||||
streamFramer.AddFrameForRetransmission(f)
|
streamFramer.AddFrameForRetransmission(f)
|
||||||
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(1))
|
Expect(payloadFrames).To(HaveLen(1))
|
||||||
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
||||||
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(BeEmpty())
|
Expect(payloadFrames).To(BeEmpty())
|
||||||
})
|
})
|
||||||
@@ -353,17 +355,17 @@ var _ = Describe("Packet packer", func() {
|
|||||||
maxStreamFrameDataLen := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen - minLength
|
maxStreamFrameDataLen := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen - minLength
|
||||||
f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen)+200)
|
f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen)+200)
|
||||||
streamFramer.AddFrameForRetransmission(f)
|
streamFramer.AddFrameForRetransmission(f)
|
||||||
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(1))
|
Expect(payloadFrames).To(HaveLen(1))
|
||||||
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
||||||
Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(int(maxStreamFrameDataLen)))
|
Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(int(maxStreamFrameDataLen)))
|
||||||
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(1))
|
Expect(payloadFrames).To(HaveLen(1))
|
||||||
Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(200))
|
Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(200))
|
||||||
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
||||||
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(BeEmpty())
|
Expect(payloadFrames).To(BeEmpty())
|
||||||
})
|
})
|
||||||
@@ -426,10 +428,10 @@ var _ = Describe("Packet packer", func() {
|
|||||||
f.Data = bytes.Repeat([]byte{'f'}, int(protocol.MaxFrameAndPublicHeaderSize-publicHeaderLen-minLength+2)) // + 2 since MinceLength is 1 bigger than the actual StreamFrame header
|
f.Data = bytes.Repeat([]byte{'f'}, int(protocol.MaxFrameAndPublicHeaderSize-publicHeaderLen-minLength+2)) // + 2 since MinceLength is 1 bigger than the actual StreamFrame header
|
||||||
|
|
||||||
streamFramer.AddFrameForRetransmission(f)
|
streamFramer.AddFrameForRetransmission(f)
|
||||||
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(1))
|
Expect(payloadFrames).To(HaveLen(1))
|
||||||
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen)
|
payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(payloadFrames).To(HaveLen(1))
|
Expect(payloadFrames).To(HaveLen(1))
|
||||||
})
|
})
|
||||||
@@ -494,7 +496,7 @@ var _ = Describe("Packet packer", func() {
|
|||||||
Data: bytes.Repeat([]byte{'f'}, length),
|
Data: bytes.Repeat([]byte{'f'}, length),
|
||||||
}
|
}
|
||||||
streamFramer.AddFrameForRetransmission(f)
|
streamFramer.AddFrameForRetransmission(f)
|
||||||
_, err := packer.composeNextPacket(nil, publicHeaderLen)
|
_, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 5}))
|
Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 5}))
|
||||||
})
|
})
|
||||||
@@ -507,7 +509,7 @@ var _ = Describe("Packet packer", func() {
|
|||||||
Data: bytes.Repeat([]byte{'f'}, length),
|
Data: bytes.Repeat([]byte{'f'}, length),
|
||||||
}
|
}
|
||||||
streamFramer.AddFrameForRetransmission(f)
|
streamFramer.AddFrameForRetransmission(f)
|
||||||
p, err := packer.composeNextPacket(nil, publicHeaderLen)
|
p, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(p).To(HaveLen(1))
|
Expect(p).To(HaveLen(1))
|
||||||
Expect(p[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
Expect(p[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
|
||||||
@@ -520,7 +522,7 @@ var _ = Describe("Packet packer", func() {
|
|||||||
Data: []byte("foobar"),
|
Data: []byte("foobar"),
|
||||||
}
|
}
|
||||||
streamFramer.AddFrameForRetransmission(f)
|
streamFramer.AddFrameForRetransmission(f)
|
||||||
_, err := packer.composeNextPacket(nil, publicHeaderLen)
|
_, err := packer.composeNextPacket(nil, maxFrameSize)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 0}))
|
Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 0}))
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user