From e55e0cb60106c13ef37a366a7429123ae2b7776a Mon Sep 17 00:00:00 2001 From: Viktor Liu Date: Sat, 18 Apr 2026 19:07:30 +0200 Subject: [PATCH] Loop on SO_RCVTIMEO inside readRouteResponse until deadline --- client/internal/routemanager/systemops/systemops_unix.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/internal/routemanager/systemops/systemops_unix.go b/client/internal/routemanager/systemops/systemops_unix.go index 0719b89fc..aee80ab15 100644 --- a/client/internal/routemanager/systemops/systemops_unix.go +++ b/client/internal/routemanager/systemops/systemops_unix.go @@ -205,7 +205,8 @@ func readRouteResponse(fd, wantType, wantSeq int) error { n, err := unix.Read(fd, resp) if err != nil { if errors.Is(err, unix.EAGAIN) || errors.Is(err, unix.EWOULDBLOCK) { - return fmt.Errorf("read: %w", err) + // SO_RCVTIMEO fired while waiting; loop to re-check the absolute deadline. + continue } return backoff.Permanent(fmt.Errorf("read: %w", err)) }