| 1 | // Copyright 2020 The Go Authors. All rights reserved. |
|---|---|
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
| 5 | //go:build !go1.16 |
| 6 | // +build !go1.16 |
| 7 | |
| 8 | package jsonrpc2 |
| 9 | |
| 10 | import ( |
| 11 | "errors" |
| 12 | "strings" |
| 13 | ) |
| 14 | |
| 15 | // errClosed is an error with the same string as net.ErrClosed, |
| 16 | // which was added in Go 1.16. |
| 17 | var errClosed = errors.New("use of closed network connection") |
| 18 | |
| 19 | // isErrClosed reports whether err ends in the same string as errClosed. |
| 20 | func isErrClosed(err error) bool { |
| 21 | // As of Go 1.16, this could be 'errors.Is(err, net.ErrClosing)', but |
| 22 | // unfortunately gopls still requires compatiblity with |
| 23 | // (otherwise-unsupported) older Go versions. |
| 24 | // |
| 25 | // In the meantime, this error strirng has not changed on any supported Go |
| 26 | // version, and is not expected to change in the future. |
| 27 | // This is not ideal, but since the worst that could happen here is some |
| 28 | // superfluous logging, it is acceptable. |
| 29 | return strings.HasSuffix(err.Error(), "use of closed network connection") |
| 30 | } |
| 31 |
Members