diff --git a/internal/bridge/user.go b/internal/bridge/user.go index 1275dea7..3d95c9a8 100644 --- a/internal/bridge/user.go +++ b/internal/bridge/user.go @@ -601,8 +601,8 @@ func (bridge *Bridge) logoutUser(ctx context.Context, user *user.User, withAPI, defer delete(bridge.users, user.ID()) // if this is actually a remove account - if withTelemetry && withData && withAPI { - user.SendConfigStatusAbort() + if withData && withAPI { + user.SendConfigStatusAbort(withTelemetry) } logrus.WithFields(logrus.Fields{ diff --git a/internal/configstatus/config_status.go b/internal/configstatus/config_status.go index 1d4df6b4..6f590936 100644 --- a/internal/configstatus/config_status.go +++ b/internal/configstatus/config_status.go @@ -170,6 +170,12 @@ func (status *ConfigurationStatus) AutoconfigUsed(client string) error { return nil } +func (status *ConfigurationStatus) Remove() error { + status.DataLock.Lock() + defer status.DataLock.Unlock() + return os.Remove(status.FilePath) +} + func (data *ConfigurationStatusData) init() { data.Metadata = Metadata{ Version: version, diff --git a/internal/user/config_status.go b/internal/user/config_status.go index ab604181..b973989b 100644 --- a/internal/user/config_status.go +++ b/internal/user/config_status.go @@ -57,11 +57,17 @@ func (user *User) SendConfigStatusSuccess() { } } -func (user *User) SendConfigStatusAbort() { +func (user *User) SendConfigStatusAbort(withTelemetry bool) { + if err := user.configStatus.Remove(); err != nil { + user.log.WithError(err).Error("Failed to remove config_status file.") + } + if !user.configStatus.IsPending() { return } - + if !withTelemetry { + return + } var builder configstatus.ConfigAbortBuilder abort := builder.New(user.configStatus.Data) data, err := json.Marshal(abort)