diff --git a/lib/auth/join.go b/lib/auth/join.go index a98ec740eef65..a142d3d450a45 100644 --- a/lib/auth/join.go +++ b/lib/auth/join.go @@ -23,6 +23,7 @@ import ( "crypto/rand" "encoding/base64" "encoding/json" + "errors" "fmt" "net" "slices" @@ -30,7 +31,9 @@ import ( "github.com/gravitational/trace" "github.com/sirupsen/logrus" + "google.golang.org/grpc/codes" "google.golang.org/grpc/peer" + "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" @@ -146,10 +149,15 @@ func (a *Server) handleJoinFailure( } log.WithError(origErr).WithFields(fields).Warn("Failure to join cluster occurred") + errorMessage := origErr.Error() + if errors.Is(origErr, context.Canceled) || status.Code(origErr) == codes.Canceled { + errorMessage = "join attempt timed out or was aborted" + } + var evt apievents.AuditEvent status := apievents.Status{ Success: false, - Error: origErr.Error(), + Error: errorMessage, } if req != nil && req.Role == types.RoleBot { botJoinEvent := &apievents.BotJoin{