From f7aa673d2ca93698885e2a36063b9ddc80086916 Mon Sep 17 00:00:00 2001 From: Forbes Date: Sun, 8 Feb 2026 22:52:42 -0600 Subject: [PATCH] fix(sse): disable read deadline for long-lived SSE connections The server's ReadTimeout (15s) was closing SSE connections shortly after they were established, causing a rapid connect/disconnect loop. The handler already disabled WriteTimeout but not ReadTimeout. --- internal/api/sse_handler.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/api/sse_handler.go b/internal/api/sse_handler.go index 64da978..3734e85 100644 --- a/internal/api/sse_handler.go +++ b/internal/api/sse_handler.go @@ -16,9 +16,12 @@ func (s *Server) HandleEvents(w http.ResponseWriter, r *http.Request) { return } - // Disable the write deadline for this long-lived connection. - // The server's WriteTimeout (15s) would otherwise kill it. + // Disable read and write deadlines for this long-lived connection. + // The server's ReadTimeout/WriteTimeout (15s) would otherwise kill it. rc := http.NewResponseController(w) + if err := rc.SetReadDeadline(time.Time{}); err != nil { + s.logger.Warn().Err(err).Msg("failed to disable read deadline for SSE") + } if err := rc.SetWriteDeadline(time.Time{}); err != nil { s.logger.Warn().Err(err).Msg("failed to disable write deadline for SSE") }