Parcourir la source

Fix version comparison when negotiating the the API version

Signed-off-by: Yu-Ju Hong <yjhong@google.com>
Yu-Ju Hong il y a 7 ans
Parent
commit
4b6ec10b07
2 fichiers modifiés avec 10 ajouts et 2 suppressions
  1. 2 2
      client/client.go
  2. 8 0
      client/client_test.go

+ 2 - 2
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
 	}
 }

+ 8 - 0
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