diff --git a/client/client.go b/client/client.go index 2072b2f806..893124853f 100644 --- a/client/client.go +++ b/client/client.go @@ -248,8 +248,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/client/client_test.go b/client/client_test.go index 9bde777f14..cb38d4da38 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -276,6 +276,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