diff --git a/contrib/codecs/http/handler.go b/contrib/codecs/http/handler.go index b5742441bd7b3a76d5da290505390f8c96d489ab..8ce711e7be3b5eb2aced347d1f0c6af069ce6578 100644 --- a/contrib/codecs/http/handler.go +++ b/contrib/codecs/http/handler.go @@ -1,12 +1,15 @@ package http import ( + "context" + "errors" "net/http" "sync" - "gfx.cafe/open/jrpc/pkg/server" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" + + "gfx.cafe/open/jrpc/pkg/server" ) func HttpHandler(s *server.Server) http.Handler { @@ -31,9 +34,9 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { c := NewCodec(w, r) w.Header().Set("content-type", contentType) err := s.Server.ServeCodec(r.Context(), c) - if err != nil { - // slog.Error("codec err", "err", err) + if err != nil && !errors.Is(err, context.Canceled) { + // slog.Error("codec err", "err", err) + http.Error(w, "Internal Error", http.StatusInternalServerError) } - http.Error(w, "Internal Error", http.StatusInternalServerError) <-c.Closed() } diff --git a/pkg/server/server.go b/pkg/server/server.go index 2139d548d5955a1e0bc022bbf4a72fae4b170db7..047214703c2465385cfcaea39d257891bd1f0a8b 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -5,9 +5,10 @@ import ( "errors" "sync" - "gfx.cafe/open/jrpc/pkg/jsonrpc" "golang.org/x/sync/semaphore" + "gfx.cafe/open/jrpc/pkg/jsonrpc" + "gfx.cafe/util/go/bufpool" "github.com/go-faster/jx"