From be25784ebabcf1b0a80b730ae38a532b1d38b432 Mon Sep 17 00:00:00 2001 From: hareku Date: Mon, 25 Apr 2022 15:37:26 +0900 Subject: [PATCH 1/3] expose quic server closed error --- server.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 5bf568a61fb..2e987bcb188 100644 --- a/server.go +++ b/server.go @@ -20,6 +20,9 @@ import ( "github.com/lucas-clemente/quic-go/logging" ) +// ErrServerClosed is returned by the Listener or EarlyListener's Accept method after a call to Close. +var ErrServerClosed = errors.New("quic: Server closed") + // packetHandler handles packets type packetHandler interface { handlePacket(*receivedPacket) @@ -284,7 +287,7 @@ func (s *baseServer) Close() error { return nil } if s.serverError == nil { - s.serverError = errors.New("server closed") + s.serverError = ErrServerClosed } // If the server was started with ListenAddr, we created the packet conn. // We need to close it in order to make the go routine reading from that conn return. From fb1f244440466b5ebda6b4e0fdef8c342230b4b2 Mon Sep 17 00:00:00 2001 From: hareku Date: Mon, 25 Apr 2022 15:51:55 +0900 Subject: [PATCH 2/3] http3.Server's serving method returns http.ErrServerClosed when quic listener is closed --- http3/server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/http3/server.go b/http3/server.go index 3897bbb9ffb..29357f77f52 100644 --- a/http3/server.go +++ b/http3/server.go @@ -255,6 +255,9 @@ func (s *Server) serveImpl(startListener func() (quic.EarlyListener, error)) err for { conn, err := ln.Accept(context.Background()) if err != nil { + if errors.Is(err, quic.ErrServerClosed) { + return http.ErrServerClosed + } return err } go s.handleConn(conn) From 7bc60e41361da3011a772d393b0fdbe81e341e32 Mon Sep 17 00:00:00 2001 From: hareku Date: Mon, 25 Apr 2022 18:54:16 +0900 Subject: [PATCH 3/3] Revert "http3.Server's serving method returns http.ErrServerClosed when quic listener is closed" This reverts commit fb1f244440466b5ebda6b4e0fdef8c342230b4b2. --- http3/server.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/http3/server.go b/http3/server.go index 29357f77f52..3897bbb9ffb 100644 --- a/http3/server.go +++ b/http3/server.go @@ -255,9 +255,6 @@ func (s *Server) serveImpl(startListener func() (quic.EarlyListener, error)) err for { conn, err := ln.Accept(context.Background()) if err != nil { - if errors.Is(err, quic.ErrServerClosed) { - return http.ErrServerClosed - } return err } go s.handleConn(conn)