From 747a47b47786f89b43eaf09e50de98768edfb2e7 Mon Sep 17 00:00:00 2001 From: Yu-Ju Hong Date: Wed, 27 Sep 2017 18:12:13 -0700 Subject: [PATCH] Fix version comparison when negotiating the the API version Signed-off-by: Yu-Ju Hong Upstream-commit: 4b6ec10b07c14e7fff1cc51156b6d954147f826f Component: engine --- components/engine/client/client.go | 4 ++-- components/engine/client/client_test.go | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/components/engine/client/client.go b/components/engine/client/client.go index 2072b2f806..893124853f 100644 --- a/components/engine/client/client.go +++ b/components/engine/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/components/engine/client/client_test.go b/components/engine/client/client_test.go index 9bde777f14..cb38d4da38 100644 --- a/components/engine/client/client_test.go +++ b/components/engine/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