Merge pull request #19178 from hashicorp/backport/b-websocket-close-messages/eminently-concise-fly

Backport of agent: ignore websocket statuses 1000, 1001 and 1005 correctly into release/1.6.x
This commit is contained in:
Piotr Kazmierczak 2023-11-27 10:21:25 +01:00 committed by GitHub
commit 2c25d302a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 0 deletions

3
.changelog/19172.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
agent: Correct websocket status code handling
```

View File

@ -10,6 +10,7 @@ import (
"io" "io"
"net" "net"
"net/http" "net/http"
"slices"
"strconv" "strconv"
"strings" "strings"
@ -671,6 +672,15 @@ func isClosedError(err error) bool {
return false return false
} }
// check if the websocket "error" is one of the benign "close" status codes
if codedErr, ok := err.(HTTPCodedError); ok {
return slices.ContainsFunc([]string{
"close 1000", // CLOSE_NORMAL
"close 1001", // CLOSE_GOING_AWAY
"close 1005", // CLOSED_NO_STATUS
}, func(s string) bool { return strings.Contains(codedErr.Error(), s) })
}
return err == io.EOF || return err == io.EOF ||
err == io.ErrClosedPipe || err == io.ErrClosedPipe ||
strings.Contains(err.Error(), "closed") || strings.Contains(err.Error(), "closed") ||