From b173573d216e3554b64657a61bcd0b3e77cb977a Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Tue, 16 Jul 2024 14:10:33 +0200 Subject: Client: Go to previous state on renew error --- client/client.go | 5 +++++ 1 file changed, 5 insertions(+) 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 -- cgit v1.2.3