reject DATAGRAM frames if datagram support is not enabled

This commit is contained in:
Marten Seemann
2019-10-06 17:50:27 +02:00
parent 913ddc5081
commit fd41e8fa62
7 changed files with 38 additions and 11 deletions

View File

@@ -13,12 +13,17 @@ import (
type frameParser struct {
ackDelayExponent uint8
supportsDatagrams bool
version protocol.VersionNumber
}
// NewFrameParser creates a new frame parser.
func NewFrameParser(v protocol.VersionNumber) FrameParser {
return &frameParser{version: v}
func NewFrameParser(supportsDatagrams bool, v protocol.VersionNumber) FrameParser {
return &frameParser{
supportsDatagrams: supportsDatagrams,
version: v,
}
}
// ParseNextFrame parses the next frame
@@ -88,7 +93,11 @@ func (p *frameParser) parseFrame(r *bytes.Reader, typeByte byte, encLevel protoc
case 0x1e:
frame, err = parseHandshakeDoneFrame(r, p.version)
case 0x30, 0x31:
frame, err = parseDatagramFrame(r, p.version)
if p.supportsDatagrams {
frame, err = parseDatagramFrame(r, p.version)
break
}
fallthrough
default:
err = errors.New("unknown frame type")
}