forked from quic-go/quic-go
Fix unnecessary stack growth when parsing frames
This commit is contained in:
@@ -11,12 +11,10 @@ import (
|
|||||||
// ParseNextFrame parses the next frame
|
// ParseNextFrame parses the next frame
|
||||||
// It skips PADDING frames.
|
// It skips PADDING frames.
|
||||||
func ParseNextFrame(r *bytes.Reader, hdr *Header, v protocol.VersionNumber) (Frame, error) {
|
func ParseNextFrame(r *bytes.Reader, hdr *Header, v protocol.VersionNumber) (Frame, error) {
|
||||||
if r.Len() == 0 {
|
for r.Len() != 0 {
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
typeByte, _ := r.ReadByte()
|
typeByte, _ := r.ReadByte()
|
||||||
if typeByte == 0x0 { // PADDING frame
|
if typeByte == 0x0 { // PADDING frame
|
||||||
return ParseNextFrame(r, hdr, v)
|
continue
|
||||||
}
|
}
|
||||||
r.UnreadByte()
|
r.UnreadByte()
|
||||||
|
|
||||||
@@ -25,6 +23,8 @@ func ParseNextFrame(r *bytes.Reader, hdr *Header, v protocol.VersionNumber) (Fra
|
|||||||
}
|
}
|
||||||
return parseIETFFrame(r, typeByte, v)
|
return parseIETFFrame(r, typeByte, v)
|
||||||
}
|
}
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
func parseIETFFrame(r *bytes.Reader, typeByte byte, v protocol.VersionNumber) (Frame, error) {
|
func parseIETFFrame(r *bytes.Reader, typeByte byte, v protocol.VersionNumber) (Frame, error) {
|
||||||
var frame Frame
|
var frame Frame
|
||||||
|
|||||||
Reference in New Issue
Block a user