From 3d087d522ca3c23def68fd362ec216408fe2210c Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sat, 14 Jul 2018 21:34:08 +0200 Subject: [PATCH] implement parsing of ACK_ECN frames --- .gometalinter.json | 3 ++- internal/wire/ack_frame.go | 19 +++++++++++++- internal/wire/ack_frame_test.go | 42 ++++++++++++++++++++++++++++++ internal/wire/frame_parser.go | 5 ++++ internal/wire/frame_parser_test.go | 1 + 5 files changed, 68 insertions(+), 2 deletions(-) diff --git a/.gometalinter.json b/.gometalinter.json index 4c9ed3cd..808b0344 100644 --- a/.gometalinter.json +++ b/.gometalinter.json @@ -17,6 +17,7 @@ "vet" ], "Linters": { - "vet": "go tool vet -printfuncs=Infof,Debugf,Warningf,Errorf:PATH:LINE:MESSAGE" + "vet": "go tool vet -printfuncs=Infof,Debugf,Warningf,Errorf:PATH:LINE:MESSAGE", + "misspell": "misspell -i ect:PATH:LINE:COL:MESSAGE" } } diff --git a/internal/wire/ack_frame.go b/internal/wire/ack_frame.go index 021cef53..00759db4 100644 --- a/internal/wire/ack_frame.go +++ b/internal/wire/ack_frame.go @@ -19,8 +19,16 @@ type AckFrame struct { DelayTime time.Duration } -// parseAckFrame reads an ACK frame func parseAckFrame(r *bytes.Reader, version protocol.VersionNumber) (*AckFrame, error) { + return parseAckOrAckEcnFrame(r, false, version) +} + +func parseAckEcnFrame(r *bytes.Reader, version protocol.VersionNumber) (*AckFrame, error) { + return parseAckOrAckEcnFrame(r, true, version) +} + +// parseAckFrame reads an ACK frame +func parseAckOrAckEcnFrame(r *bytes.Reader, ecn bool, version protocol.VersionNumber) (*AckFrame, error) { if !version.UsesIETFFrameFormat() { return parseAckFrameLegacy(r, version) } @@ -41,6 +49,15 @@ func parseAckFrame(r *bytes.Reader, version protocol.VersionNumber) (*AckFrame, return nil, err } frame.DelayTime = time.Duration(delay*1<