diff --git a/components/engine/client/client.go b/components/engine/client/client.go index f7a8c07d3a..3f470dea66 100644 --- a/components/engine/client/client.go +++ b/components/engine/client/client.go @@ -266,8 +266,8 @@ func (cli *Client) NegotiateAPIVersionPing(p types.Ping) { cli.version = api.DefaultVersion } - // if server version is lower than the maximum version supported by the Client, downgrade - if versions.LessThan(p.APIVersion, api.DefaultVersion) { + // if server version is lower than the client version, downgrade + if versions.LessThan(p.APIVersion, cli.version) { cli.version = p.APIVersion } } diff --git a/components/engine/client/client_test.go b/components/engine/client/client_test.go index bc911c0c4a..5ff08eb59d 100644 --- a/components/engine/client/client_test.go +++ b/components/engine/client/client_test.go @@ -245,6 +245,14 @@ func TestNegotiateAPIVersion(t *testing.T) { // test downgrade client.NegotiateAPIVersionPing(ping) assert.Equal(t, expected, client.version) + + // set the client version to something older, and verify that we keep the + // original setting. + expected = "1.20" + client.version = expected + client.NegotiateAPIVersionPing(ping) + assert.Equal(t, expected, client.version) + } // TestNegotiateAPIVersionOverride asserts that we honor