From 4006fe2d04aeb031fd0d5936c5ab838e39eda14b Mon Sep 17 00:00:00 2001 From: Jan Svabenik Date: Tue, 17 Mar 2026 20:29:59 +0100 Subject: [PATCH] Avoid indefinite ReadIQ waits when callbacks stop --- internal/sdrplay/sdrplay.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/internal/sdrplay/sdrplay.go b/internal/sdrplay/sdrplay.go index 9ea439f..ae95399 100644 --- a/internal/sdrplay/sdrplay.go +++ b/internal/sdrplay/sdrplay.go @@ -343,13 +343,10 @@ func (s *Source) ReadIQ(n int) ([]complex64, error) { if time.Now().After(deadline) { return nil, errors.New("timeout waiting for IQ samples") } - if s.cond != nil { - s.cond.Wait() - } else { - s.mu.Unlock() - time.Sleep(50 * time.Millisecond) - s.mu.Lock() - } + // Timed wait to avoid indefinite block if callbacks stop. + s.mu.Unlock() + time.Sleep(20 * time.Millisecond) + s.mu.Lock() } out := make([]complex64, n) for i := 0; i < n; i++ {