From 8f1110450bad0b41f8dd03ea8cf24c299a9c9a20 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Mon, 24 Jun 2024 03:33:34 -0700 Subject: [PATCH] use a net.ErrClosed when returning Accept from a closed server (#4569) --- server.go | 7 ++++++- server_test.go | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index a55bdd43b..d18e87e79 100644 --- a/server.go +++ b/server.go @@ -18,7 +18,12 @@ import ( ) // ErrServerClosed is returned by the Listener or EarlyListener's Accept method after a call to Close. -var ErrServerClosed = errors.New("quic: server closed") +var ErrServerClosed = errServerClosed{} + +type errServerClosed struct{} + +func (errServerClosed) Error() string { return "quic: server closed" } +func (errServerClosed) Unwrap() error { return net.ErrClosed } // packetHandler handles packets type packetHandler interface { diff --git a/server_test.go b/server_test.go index 2bede3c08..24dcadd84 100644 --- a/server_test.go +++ b/server_test.go @@ -941,6 +941,7 @@ var _ = Describe("Server", func() { defer GinkgoRecover() _, err := serv.Accept(context.Background()) Expect(err).To(MatchError(ErrServerClosed)) + Expect(err).To(MatchError(net.ErrClosed)) close(done) }()