Commit 4fe39597 authored by Joshua Gutow's avatar Joshua Gutow

Address PR feedback

parent 40724cea
......@@ -72,16 +72,12 @@ func (ch *Channel) AddFrame(frame Frame, l1InclusionBlock eth.L1BlockRef) error
// Prune frames with a number higher than the closing frame number when we receive a closing frame
if frame.IsLast && ch.endFrameNumber < ch.highestFrameNumber {
// Do a linear scan over saved inputs instead of ranging over ID numbers
var idsToPrune []uint64
for id, prunedFrame := range ch.inputs {
if id >= uint64(ch.endFrameNumber) {
idsToPrune = append(idsToPrune, id)
delete(ch.inputs, id)
}
ch.size -= frameSize(prunedFrame)
}
for _, id := range idsToPrune {
delete(ch.inputs, id)
}
ch.highestFrameNumber = ch.endFrameNumber
}
// Update highest seen frame number after pruning
......@@ -141,7 +137,7 @@ func (ch *Channel) Reader() io.Reader {
if !ok {
panic("dev error in channel.Reader. Must be called after the channel is ready.")
}
readers = append(readers, bytes.NewBuffer(frame.Data))
readers = append(readers, bytes.NewReader(frame.Data))
}
return io.MultiReader(readers...)
}
......
......@@ -61,6 +61,14 @@ func TestFrameValidity(t *testing.T) {
shouldErr: []bool{false, true},
sizes: []uint64{204, 204},
},
{
name: "duplicate closing frames",
frames: []Frame{
{ID: id, FrameNumber: 2, IsLast: true, Data: []byte("four")},
{ID: id, FrameNumber: 2, IsLast: true, Data: []byte("seven__")}},
shouldErr: []bool{false, true},
sizes: []uint64{204, 204},
},
{
name: "frame past closing",
frames: []Frame{
......@@ -77,6 +85,14 @@ func TestFrameValidity(t *testing.T) {
shouldErr: []bool{false, false},
sizes: []uint64{207, 204},
},
{
name: "multiple valid frames",
frames: []Frame{
{ID: id, FrameNumber: 10, Data: []byte("seven__")},
{ID: id, FrameNumber: 2, Data: []byte("four")}},
shouldErr: []bool{false, false},
sizes: []uint64{207, 411},
},
}
for _, tc := range testCases {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment