| // Copyright 2020 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build !go1.16 |
| // +build !go1.16 |
| |
| package jsonrpc2 |
| |
| import ( |
| "errors" |
| "strings" |
| ) |
| |
| // errClosed is an error with the same string as net.ErrClosed, |
| // which was added in Go 1.16. |
| var errClosed = errors.New("use of closed network connection") |
| |
| // isErrClosed reports whether err ends in the same string as errClosed. |
| func isErrClosed(err error) bool { |
| // As of Go 1.16, this could be 'errors.Is(err, net.ErrClosing)', but |
| // unfortunately gopls still requires compatibility with |
| // (otherwise-unsupported) older Go versions. |
| // |
| // In the meantime, this error string has not changed on any supported Go |
| // version, and is not expected to change in the future. |
| // This is not ideal, but since the worst that could happen here is some |
| // superfluous logging, it is acceptable. |
| return strings.HasSuffix(err.Error(), "use of closed network connection") |
| } |