diff --git a/cmd/ctrld/cli.go b/cmd/ctrld/cli.go index 5f18933..460c113 100644 --- a/cmd/ctrld/cli.go +++ b/cmd/ctrld/cli.go @@ -669,7 +669,7 @@ func processCDFlags() { } logger := mainLog.With().Str("mode", "cd").Logger() logger.Info().Msgf("fetching Controld D configuration from API: %s", cdUID) - resolverConfig, err := controld.FetchResolverConfig(cdUID) + resolverConfig, err := controld.FetchResolverConfig(cdUID, rootCmd.Version) if uer, ok := err.(*controld.UtilityErrorResponse); ok && uer.ErrorField.Code == controld.InvalidConfigCode { s, err := service.New(&prog{}, svcConfig) if err != nil { diff --git a/internal/controld/config.go b/internal/controld/config.go index 48efef9..a77eecd 100644 --- a/internal/controld/config.go +++ b/internal/controld/config.go @@ -51,7 +51,7 @@ type utilityRequest struct { } // FetchResolverConfig fetch Control D config for given uid. -func FetchResolverConfig(uid string) (*ResolverConfig, error) { +func FetchResolverConfig(uid, version string) (*ResolverConfig, error) { body, _ := json.Marshal(utilityRequest{UID: uid}) req, err := http.NewRequest("POST", resolverDataURL, bytes.NewReader(body)) if err != nil { @@ -59,6 +59,7 @@ func FetchResolverConfig(uid string) (*ResolverConfig, error) { } q := req.URL.Query() q.Set("platform", "ctrld") + q.Set("version", version) req.URL.RawQuery = q.Encode() req.Header.Add("Content-Type", "application/json") transport := http.DefaultTransport.(*http.Transport).Clone() diff --git a/internal/controld/config_test.go b/internal/controld/config_test.go index 13d937a..d46cf95 100644 --- a/internal/controld/config_test.go +++ b/internal/controld/config_test.go @@ -22,7 +22,7 @@ func TestFetchResolverConfig(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() - got, err := FetchResolverConfig(tc.uid) + got, err := FetchResolverConfig(tc.uid, "dev-test") require.False(t, (err != nil) != tc.wantErr, err) if !tc.wantErr { assert.NotEmpty(t, got.DOH)