Close session on write error

This commit is contained in:
Ola
2023-03-08 16:13:03 +01:00
parent 71e1cea03c
commit 051331a0c6
2 changed files with 13 additions and 5 deletions
+11 -5
View File
@@ -6,6 +6,7 @@ import (
"math/rand" "math/rand"
"net/http" "net/http"
"net/http/httptest" "net/http/httptest"
"os"
"strconv" "strconv"
"strings" "strings"
"sync" "sync"
@@ -469,7 +470,8 @@ func TestHandleError(t *testing.T) {
} }
func TestHandleErrorWrite(t *testing.T) { func TestHandleErrorWrite(t *testing.T) {
done := make(chan bool) writeError := make(chan struct{})
disconnect := make(chan struct{})
ws := NewTestServer() ws := NewTestServer()
ws.m.Config.WriteWait = 0 ws.m.Config.WriteWait = 0
@@ -482,12 +484,15 @@ func TestHandleErrorWrite(t *testing.T) {
ws.m.HandleError(func(s *Session, err error) { ws.m.HandleError(func(s *Session, err error) {
assert.NotNil(t, err) assert.NotNil(t, err)
var closeError *websocket.CloseError if os.IsTimeout(err) {
if !errors.As(err, &closeError) { close(writeError)
close(done)
} }
}) })
ws.m.HandleDisconnect(func(s *Session) {
close(disconnect)
})
server := httptest.NewServer(ws) server := httptest.NewServer(ws)
defer server.Close() defer server.Close()
@@ -496,7 +501,8 @@ func TestHandleErrorWrite(t *testing.T) {
go conn.NextReader() go conn.NextReader()
<-done <-writeError
<-disconnect
} }
func TestErrClosed(t *testing.T) { func TestErrClosed(t *testing.T) {
+2
View File
@@ -105,6 +105,8 @@ loop:
} }
} }
} }
s.close()
} }
func (s *Session) readPump() { func (s *Session) readPump() {