diff options
Diffstat (limited to 'client/client.go')
| -rw-r--r-- | client/client.go | 5 |
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 |
