Closed
Description
If Close
is called after the HTTP server has been closed, a goroutine currently leaks.
package main
import (
"context"
"net/http"
"net/http/httptest"
"go.uber.org/goleak"
"nhooyr.io/websocket"
)
func main() {
done := make(chan struct{})
srv := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
conn, err := websocket.Accept(rw, r, nil)
if err != nil {
panic(err)
}
close(done)
conn.Close(websocket.StatusNormalClosure, "")
}))
_, _, err := websocket.Dial(context.Background(), srv.URL, nil)
if err != nil {
panic(err)
}
<-done
srv.Close()
err = goleak.Find()
if err != nil {
panic(err)
}
}
Metadata
Metadata
Assignees
Labels
No labels