diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2024-07-03 12:18:43 +0200 |
|---|---|---|
| committer | Jeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com> | 2024-07-17 14:00:03 +0000 |
| commit | 895112235b9239d8db9f129451605e1e8b9c2a12 (patch) | |
| tree | 567ca70ff0c1c28097b8408303ca932f88d8b441 /client | |
| parent | 04e49f0f61397c782649607163534249b05e87ae (diff) | |
Client: Fetch disco fresh after startup calling GetConfig
Diffstat (limited to 'client')
| -rw-r--r-- | client/client.go | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/client/client.go b/client/client.go index ac13e62..12e0ea5 100644 --- a/client/client.go +++ b/client/client.go @@ -166,6 +166,13 @@ func New(name string, version string, directory string, stateCallback func(FSMSt // set the servers c.Servers = server.NewServers(c.Name, c, c.cfg.V2) + + // the first fetch for the servers should be fresh + c.cfg.Discovery().MarkServersExpired() + + if !c.cfg.HasSecureInternet() { + c.cfg.Discovery().MarkOrganizationsExpired() + } return c, nil } @@ -423,22 +430,30 @@ func (c *Client) GetConfig(ck *cookie.Cookie, identifier string, _type srvtypes. if err != nil { log.Logger.Debugf("no tokens found for server: '%s', with error: '%v'", identifier, err) } + + ctx := ck.Context() + disco := c.cfg.Discovery() + // make sure the servers are fetched fresh + disco.Servers(ctx) + var srv *server.Server switch _type { case srvtypes.TypeInstituteAccess: - srv, err = c.Servers.GetInstitute(ck.Context(), identifier, c.cfg.Discovery(), tok, startup) + srv, err = c.Servers.GetInstitute(ctx, identifier, disco, tok, startup) case srvtypes.TypeSecureInternet: - srv, err = c.Servers.GetSecure(ck.Context(), identifier, c.cfg.Discovery(), tok, startup) + // make sure the organizations are fetched if they need an update + disco.Organizations(ctx) + srv, err = c.Servers.GetSecure(ctx, identifier, disco, tok, startup) var cErr *discovery.ErrCountryNotFound if errors.As(err, &cErr) { err = c.locationCallback(ck, identifier) if err == nil { - srv, err = c.Servers.GetSecure(ck.Context(), identifier, c.cfg.Discovery(), tok, startup) + srv, err = c.Servers.GetSecure(ctx, identifier, disco, tok, startup) } } case srvtypes.TypeCustom: - srv, err = c.Servers.GetCustom(ck.Context(), identifier, tok, startup) + srv, err = c.Servers.GetCustom(ctx, identifier, tok, startup) default: err = i18nerr.NewInternalf("Server type: '%v' is not valid to get a config for", _type) } |
