From 6a9a591a10508c7d69595fa615dbbbf3e080f9eb Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 8 Nov 2019 13:48:50 +0700 Subject: [PATCH] use application-specific CONNECTION_CLOSE for normal termination --- session.go | 2 +- session_test.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/session.go b/session.go index 5353bcec..a37b6b87 100644 --- a/session.go +++ b/session.go @@ -1030,7 +1030,7 @@ func (s *session) CloseWithError(code protocol.ApplicationErrorCode, desc string func (s *session) handleCloseError(closeErr closeError) { if closeErr.err == nil { - closeErr.err = qerr.NoError + closeErr.err = qerr.ApplicationError(0, "") } var quicErr *qerr.QuicError diff --git a/session_test.go b/session_test.go index ea3e05f2..2ba573e8 100644 --- a/session_test.go +++ b/session_test.go @@ -426,10 +426,16 @@ var _ = Describe("Session", func() { }) It("shuts down without error", func() { - streamManager.EXPECT().CloseWithError(qerr.Error(qerr.NoError, "")) + streamManager.EXPECT().CloseWithError(qerr.ApplicationError(0, "")) expectReplaceWithClosed() cryptoSetup.EXPECT().Close() - packer.EXPECT().PackConnectionClose(gomock.Any()).Return(&packedPacket{raw: []byte("connection close")}, nil) + packer.EXPECT().PackConnectionClose(gomock.Any()).DoAndReturn(func(f *wire.ConnectionCloseFrame) (*packedPacket, error) { + Expect(f.IsApplicationError).To(BeTrue()) + Expect(f.ErrorCode).To(Equal(qerr.NoError)) + Expect(f.FrameType).To(BeZero()) + Expect(f.ReasonPhrase).To(BeEmpty()) + return &packedPacket{raw: []byte("connection close")}, nil + }) Expect(sess.Close()).To(Succeed()) Eventually(areSessionsRunning).Should(BeFalse()) Expect(mconn.written).To(HaveLen(1)) @@ -438,7 +444,7 @@ var _ = Describe("Session", func() { }) It("only closes once", func() { - streamManager.EXPECT().CloseWithError(qerr.Error(qerr.NoError, "")) + streamManager.EXPECT().CloseWithError(gomock.Any()) expectReplaceWithClosed() cryptoSetup.EXPECT().Close() packer.EXPECT().PackConnectionClose(gomock.Any()).Return(&packedPacket{}, nil)