fix: stop reading closed channel for /watch devcontainers endpoint (#19373)

Fixes https://github.com/coder/coder/issues/19372

We increase the read limit to 4MiB (we use this limit elsewhere). We
also make sure to stop sending messages when `containersCh` becomes
closed.
This commit is contained in:
Danielle Maywood
2025-08-15 12:32:33 +01:00
committed by GitHub
parent a9f607afd8
commit 205eb29e60
5 changed files with 250 additions and 150 deletions
+5 -1
View File
@@ -763,7 +763,11 @@ func (api *API) broadcastUpdatesLocked() {
func (api *API) watchContainers(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context()
conn, err := websocket.Accept(rw, r, nil)
conn, err := websocket.Accept(rw, r, &websocket.AcceptOptions{
// We want `NoContextTakeover` compression to balance improving
// bandwidth cost/latency with minimal memory usage overhead.
CompressionMode: websocket.CompressionNoContextTakeover,
})
if err != nil {
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
Message: "Failed to upgrade connection to websocket.",