From 8c2d37d3fc0a97dd16986358e7389a12c92b156b Mon Sep 17 00:00:00 2001 From: Viktor Liu <17948409+lixmal@users.noreply.github.com> Date: Tue, 20 Aug 2024 19:13:40 +0200 Subject: [PATCH] [management] Fix logging out peers on deletion (#2453) --- management/server/grpcserver.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/management/server/grpcserver.go b/management/server/grpcserver.go index ff7a71cfd..ead4a29d6 100644 --- a/management/server/grpcserver.go +++ b/management/server/grpcserver.go @@ -132,24 +132,30 @@ func (s *GRPCServer) Sync(req *proto.EncryptedMessage, srv proto.ManagementServi ctx := srv.Context() - realIP := getRealIP(ctx) - syncReq := &proto.SyncRequest{} peerKey, err := s.parseRequest(ctx, req, syncReq) if err != nil { return err } - //nolint + // nolint:staticcheck ctx = context.WithValue(ctx, nbContext.PeerIDKey, peerKey.String()) + accountID, err := s.accountManager.GetAccountIDForPeerKey(ctx, peerKey.String()) if err != nil { - // this case should not happen and already indicates an issue but we don't want the system to fail due to being unable to log in detail - accountID = "UNKNOWN" + // nolint:staticcheck + ctx = context.WithValue(ctx, nbContext.AccountIDKey, "UNKNOWN") + log.WithContext(ctx).Tracef("peer %s is not registered", peerKey.String()) + if errStatus, ok := internalStatus.FromError(err); ok && errStatus.Type() == internalStatus.NotFound { + return status.Errorf(codes.PermissionDenied, "peer is not registered") + } + return err } - //nolint + + // nolint:staticcheck ctx = context.WithValue(ctx, nbContext.AccountIDKey, accountID) + realIP := getRealIP(ctx) log.WithContext(ctx).Debugf("Sync request from peer [%s] [%s]", req.WgPubKey, realIP.String()) if syncReq.GetMeta() == nil {