From 0dbfefc1f64bc164e8150832950db708bdb7357b Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Thu, 22 Aug 2019 12:20:13 +0700 Subject: [PATCH] fix length calculcation for CONNECTION_CLOSE frames --- internal/wire/connection_close_frame.go | 2 +- internal/wire/connection_close_frame_test.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/wire/connection_close_frame.go b/internal/wire/connection_close_frame.go index 9a11a34c6..9d59f370e 100644 --- a/internal/wire/connection_close_frame.go +++ b/internal/wire/connection_close_frame.go @@ -62,7 +62,7 @@ func parseConnectionCloseFrame(r *bytes.Reader, version protocol.VersionNumber) func (f *ConnectionCloseFrame) Length(version protocol.VersionNumber) protocol.ByteCount { length := 1 + utils.VarIntLen(uint64(f.ErrorCode)) + utils.VarIntLen(uint64(len(f.ReasonPhrase))) + protocol.ByteCount(len(f.ReasonPhrase)) if !f.IsApplicationError { - length++ // for the frame type + length += utils.VarIntLen(f.FrameType) // for the frame type } return length } diff --git a/internal/wire/connection_close_frame_test.go b/internal/wire/connection_close_frame_test.go index 0fbb3629b..517b2f842 100644 --- a/internal/wire/connection_close_frame_test.go +++ b/internal/wire/connection_close_frame_test.go @@ -132,6 +132,7 @@ var _ = Describe("CONNECTION_CLOSE Frame", func() { b := &bytes.Buffer{} f := &ConnectionCloseFrame{ ErrorCode: 0xcafe, + FrameType: 0xdeadbeef, ReasonPhrase: "foobar", } Expect(f.Write(b, versionIETFFrames)).To(Succeed())