From a8e71f7f20a1d5640d08ff637dc209206f536b8d Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Tue, 20 Dec 2022 17:14:13 +0100 Subject: Client + Exports: Forward tokens for /disconnect --- client/fsm.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'client') diff --git a/client/fsm.go b/client/fsm.go index c156fba..88f2cf9 100644 --- a/client/fsm.go +++ b/client/fsm.go @@ -2,6 +2,7 @@ package client import ( "github.com/eduvpn/eduvpn-common/internal/fsm" + "github.com/eduvpn/eduvpn-common/internal/oauth" "github.com/eduvpn/eduvpn-common/internal/server" "github.com/go-errors/errors" ) @@ -294,7 +295,7 @@ func (c *Client) SetDisconnecting() error { // This indicates that the VPN is currently disconnected from the server. // This also sends the /disconnect API call to the server. // Returns an error if this state transition is not possible. -func (c *Client) SetDisconnected(cleanup bool) error { +func (c *Client) SetDisconnected(cleanup bool, ct oauth.Token) error { if c.InFSMState(StateDisconnected) { // already disconnected, show no error c.Logger.Warningf("Already disconnected") @@ -312,8 +313,15 @@ func (c *Client) SetDisconnected(cleanup bool) error { } if cleanup { + // If we need to relogin, update tokens + if server.NeedsRelogin(srv) { + server.UpdateTokens(srv, ct) + } // Do the /disconnect API call and go to disconnected after... - server.Disconnect(srv) + err := server.Disconnect(srv) + if err != nil { + c.Logger.Warningf("Error disconnecting %v", err) + } } c.FSM.GoTransitionWithData(StateDisconnected, srv) -- cgit v1.2.3