From 612659eecb7b3ce0432cd9983a6f5704a0c04936 Mon Sep 17 00:00:00 2001 From: Lukasz Janyst Date: Wed, 11 May 2022 10:47:51 +0200 Subject: [PATCH] peroxide: Fix a deadlock on failed authorization Issue #13 --- pkg/users/user.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/users/user.go b/pkg/users/user.go index 22f29a8..0074905 100644 --- a/pkg/users/user.go +++ b/pkg/users/user.go @@ -279,7 +279,7 @@ func (u *User) unlockIfNecessary() error { } if pmapi.IsFailedAuth(err) || pmapi.IsFailedUnlock(err) { - if logoutErr := u.Logout(); logoutErr != nil { + if logoutErr := u.logout(); logoutErr != nil { u.log.WithError(logoutErr).Warn("Could not logout user") } return errors.Wrap(err, "failed to unlock user") @@ -411,7 +411,7 @@ func (u *User) BringOnline(username, password string) error { } if pmapi.IsFailedAuth(connectErr) { - if logoutErr := u.Logout(); logoutErr != nil { + if logoutErr := u.logout(); logoutErr != nil { logrus.WithError(logoutErr).Warn("Could not logout user") } } @@ -491,7 +491,10 @@ func (u *User) SwitchAddressMode() error { func (u *User) Logout() error { u.lock.Lock() defer u.lock.Unlock() + return u.logout() +} +func (u *User) logout() error { u.log.Debug("Logging out user") if !u.creds.IsConnected() {