summaryrefslogtreecommitdiff
path: root/client/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'client/client.go')
-rw-r--r--client/client.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/client/client.go b/client/client.go
index 9a26485..a50a111 100644
--- a/client/client.go
+++ b/client/client.go
@@ -627,11 +627,16 @@ func (c *Client) RenewSession(ck *cookie.Cookie) error {
return i18nerr.WrapInternal(err, "The current server could not be retrieved when renewing the session")
}
+ c.mu.Lock()
+ defer c.mu.Unlock()
+ previousState := c.FSM.Current
+
// getting a server with no tokens means re-authorize
disco, release := c.discoMan.Discovery(true)
defer release()
_, err = srv.ServerWithCallbacks(ck.Context(), disco, nil, false)
if err != nil {
+ c.FSM.GoTransition(previousState)
return i18nerr.WrapInternal(err, "The server was unable to be retrieved when renewing the session")
}
return nil