From ec1504e0cedbfeffc35e50a09633e51e93bf0e2d Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 5 Mar 2026 19:09:27 +0200 Subject: more on this --- internal/server/handlers/basehandler.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'internal/server/handlers/basehandler.go') diff --git a/internal/server/handlers/basehandler.go b/internal/server/handlers/basehandler.go index d510139..030baf9 100644 --- a/internal/server/handlers/basehandler.go +++ b/internal/server/handlers/basehandler.go @@ -77,6 +77,13 @@ func (h *baseHandler) Read(p []byte) (n int, err error) { return n, nil } + pollInterval := time.Second + if h.turbo.enabled() { + // Turbo reads require tighter wake-ups so we can continue draining the turbo channel. + pollInterval = h.turbo.resolvedReadRetryInterval() + } + poll := time.After(pollInterval) + select { case message := <-h.serverMessages: if len(message) > 0 && message[0] == '.' { @@ -131,6 +138,16 @@ func (h *baseHandler) Read(p []byte) (n int, err error) { case <-h.done.Done(): err = io.EOF return + + case <-poll: + // Wake periodically so turbo mode transitions don't leave this read blocked forever. + select { + case <-h.done.Done(): + err = io.EOF + return + default: + } + return } return } -- cgit v1.2.3