From a72ef1af39f49d508b01aab90ab46cd18aa9c27e Mon Sep 17 00:00:00 2001 From: hakansa <43675540+hakansa@users.noreply.github.com> Date: Tue, 29 Jul 2025 20:38:44 +0300 Subject: [PATCH] [client] Fix error handling for set config request on CLI (#4237) [client] Fix error handling for set config request on CLI (#4237) --- client/cmd/up.go | 7 ++++++- client/server/server.go | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/client/cmd/up.go b/client/cmd/up.go index 98e1c02b3..a0c26a207 100644 --- a/client/cmd/up.go +++ b/client/cmd/up.go @@ -13,6 +13,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "google.golang.org/grpc/codes" + gstatus "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/durationpb" @@ -242,7 +243,11 @@ func runInDaemonMode(ctx context.Context, cmd *cobra.Command, pm *profilemanager // set the new config req := setupSetConfigReq(customDNSAddressConverted, cmd, activeProf.Name, username.Username) if _, err := client.SetConfig(ctx, req); err != nil { - return fmt.Errorf("call service set config method: %v", err) + if st, ok := gstatus.FromError(err); ok && st.Code() == codes.Unavailable { + log.Warnf("setConfig method is not available in the daemon") + } else { + return fmt.Errorf("call service setConfig method: %v", err) + } } if err := doDaemonUp(ctx, cmd, client, pm, activeProf, customDNSAddressConverted, username.Username); err != nil { diff --git a/client/server/server.go b/client/server/server.go index 80cd6078f..3cb173881 100644 --- a/client/server/server.go +++ b/client/server/server.go @@ -452,6 +452,11 @@ func (s *Server) Login(callerCtx context.Context, msg *proto.LoginRequest) (*pro } if *msg.ProfileName != activeProf.Name && username != activeProf.Username { + if s.checkProfilesDisabled() { + log.Errorf("profiles are disabled, you cannot use this feature without profiles enabled") + return nil, gstatus.Errorf(codes.Unavailable, errProfilesDisabled) + } + log.Infof("switching to profile %s for user '%s'", *msg.ProfileName, username) if err := s.profileManager.SetActiveProfileState(&profilemanager.ActiveProfileState{ Name: *msg.ProfileName,