From b52974ebb7995c854baa9682f37a1b0f409f511b Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Wed, 6 Sep 2023 16:48:16 +0200 Subject: Client: Refresh server endpoints on renew and cleanup --- client/client.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'client/client.go') diff --git a/client/client.go b/client/client.go index eab704a..c54dd0e 100644 --- a/client/client.go +++ b/client/client.go @@ -835,6 +835,19 @@ func (c *Client) Cleanup(ck *cookie.Cookie) (err error) { if err != nil { return i18nerr.Wrap(err, "Failed to get the current server to cleanup the connection") } + + err = srv.RefreshEndpoints(ck.Context(), &c.Discovery) + + // If we get a canceled error, return that, otherwise just log the error + if err != nil { + if errors.Is(err, context.Canceled) { + return i18nerr.Wrap(err, "Cleanup was canceled") + } + + log.Logger.Warningf("failed to refresh server endpoints: %v", err) + } + + defer c.SaveState() err = c.updateTokens(srv) if err != nil { @@ -884,6 +897,18 @@ func (c *Client) RenewSession(ck *cookie.Cookie) (err error) { if !c.FSM.InState(StateLoadingServer) { c.FSM.GoTransition(StateLoadingServer) //nolint:errcheck } + err = srv.RefreshEndpoints(ck.Context(), &c.Discovery) + + // If we get a canceled error, return that, otherwise just log the error + if err != nil { + if errors.Is(err, context.Canceled) { + return i18nerr.Wrap(err, "Renewing was canceled") + } + + log.Logger.Warningf("failed to refresh server endpoints: %v", err) + } + + // update tokens in the end defer func() { terr := c.forwardTokens(srv) -- cgit v1.2.3