From 98d341fbae16f56b6bc63b6028c7fdde162596f1 Mon Sep 17 00:00:00 2001 From: Miguel de la Cruz Date: Fri, 25 Oct 2024 11:30:29 +0200 Subject: [PATCH] Return an error if an invite for a confirmed remote cluster is received (#28943) Co-authored-by: Caleb Roseland --- server/platform/services/remotecluster/error.go | 9 ++++++++- server/platform/services/remotecluster/recv.go | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/server/platform/services/remotecluster/error.go b/server/platform/services/remotecluster/error.go index db693740a4..a7c7ab594b 100644 --- a/server/platform/services/remotecluster/error.go +++ b/server/platform/services/remotecluster/error.go @@ -3,7 +3,14 @@ package remotecluster -import "fmt" +import ( + "errors" + "fmt" +) + +var ( + RemoteClusterAlreadyConfirmedError = errors.New("the remote cluster has already been confirmed") +) type BufferFullError struct { capacity int diff --git a/server/platform/services/remotecluster/recv.go b/server/platform/services/remotecluster/recv.go index b4866b3594..b98cfa8b31 100644 --- a/server/platform/services/remotecluster/recv.go +++ b/server/platform/services/remotecluster/recv.go @@ -62,6 +62,10 @@ func (rcs *Service) ReceiveInviteConfirmation(confirm model.RemoteClusterInvite) return nil, fmt.Errorf("cannot accept invite confirmation for remote %s: %w", confirm.RemoteId, err) } + if rc.IsConfirmed() { + return nil, fmt.Errorf("cannot accept invite confirmation for remote %s: %w", confirm.RemoteId, RemoteClusterAlreadyConfirmedError) + } + rc.SiteURL = confirm.SiteURL rc.RemoteToken = confirm.Token