From 3279b705fe5f6aa0348515bd4f37f50bf42f0fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Papp?= Date: Thu, 28 May 2026 19:28:15 +0200 Subject: [PATCH] session-extend: drop dead retry loop in mgmClient.ExtendAuthSession MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The backoff loop only retried on codes.Canceled, but mgmCtx was derived from context.Background() and never cancelled by anything — so every real error path (Unavailable, DeadlineExceeded, etc.) went through backoff.Permanent on the first attempt. The loop was a no-op wrapper that just held the call open for the daemon's lifetime regardless of shutdown. Replace with a single context.WithTimeout(c.ctx, ConnectTimeout) call. Daemon shutdown now interrupts the RPC; behaviour on real errors is unchanged. --- shared/management/client/grpc.go | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/shared/management/client/grpc.go b/shared/management/client/grpc.go index 016cde68a..a50ca9bc5 100644 --- a/shared/management/client/grpc.go +++ b/shared/management/client/grpc.go @@ -630,26 +630,14 @@ func (c *GrpcClient) ExtendAuthSession(sysInfo *system.Info, jwtToken string) (* return nil, err } - var resp *proto.EncryptedMessage - operation := func() error { - mgmCtx, cancel := context.WithTimeout(context.Background(), ConnectTimeout) - defer cancel() + mgmCtx, cancel := context.WithTimeout(c.ctx, ConnectTimeout) + defer cancel() - var err error - resp, err = c.realClient.ExtendAuthSession(mgmCtx, &proto.EncryptedMessage{ - WgPubKey: c.key.PublicKey().String(), - Body: reqBody, - }) - if err != nil { - if s, ok := gstatus.FromError(err); ok && s.Code() == codes.Canceled { - return err - } - return backoff.Permanent(err) - } - return nil - } - - if err := backoff.Retry(operation, nbgrpc.Backoff(c.ctx)); err != nil { + resp, err := c.realClient.ExtendAuthSession(mgmCtx, &proto.EncryptedMessage{ + WgPubKey: c.key.PublicKey().String(), + Body: reqBody, + }) + if err != nil { log.Errorf("failed to extend auth session on Management Service: %v", err) return nil, err }