+ // Get current config and update connection to server when needed
+ xdsConf := xaapiv1.APIConfig{}
+ if err := g.httpCli.Get("/config", &xdsConf); err != nil {
+ return int(syscallEBADE), err
+ }
+ // FIXME: add multi-servers support
+ idx := 0
+ svrCfg := xdsConf.Servers[idx]
+ if g.serverURL != "" && (svrCfg.URL != g.serverURL || !svrCfg.Connected) {
+ svrCfg.URL = g.serverURL
+ svrCfg.ConnRetry = 10
+ newCfg := xaapiv1.APIConfig{}
+ if err := g.httpCli.Post("/config", xdsConf, &newCfg); err != nil {
+ return int(syscallEBADE), err
+ }
+
+ } else if !svrCfg.Connected {
+ return int(syscallEBADE), fmt.Errorf("XDS server not connected (url=%s)", svrCfg.URL)
+ }
+
+ // Get XDS projects list