mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Fix empty WithVersion blocking version negotiation
commit 3d72963ab8
fixed
situations where a version negotiation could override
the version, even though a client was initialized with a
fixed version.
In situations where the "fixed" version is empty, we
should ignore the option, and treat the client as
"not having a fixed version", so that API version
negotiation can still be performed.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
c2cb72e085
commit
0041e2419a
2 changed files with 26 additions and 3 deletions
|
@ -265,6 +265,26 @@ func TestNegotiateAPVersionOverride(t *testing.T) {
|
|||
assert.Check(t, is.Equal(expected, client.version))
|
||||
}
|
||||
|
||||
// TestNegotiateAPIVersionWithEmptyVersion asserts that initializing a client
|
||||
// with an empty version string does still allow API-version negotiation
|
||||
func TestNegotiateAPIVersionWithEmptyVersion(t *testing.T) {
|
||||
client, err := NewClientWithOpts(WithVersion(""))
|
||||
assert.NilError(t, err)
|
||||
|
||||
client.NegotiateAPIVersionPing(types.Ping{APIVersion: "1.35"})
|
||||
assert.Equal(t, client.version, "1.35")
|
||||
}
|
||||
|
||||
// TestNegotiateAPIVersionWithFixedVersion asserts that initializing a client
|
||||
// with an fixed version disables API-version negotiation
|
||||
func TestNegotiateAPIVersionWithFixedVersion(t *testing.T) {
|
||||
client, err := NewClientWithOpts(WithVersion("1.35"))
|
||||
assert.NilError(t, err)
|
||||
|
||||
client.NegotiateAPIVersionPing(types.Ping{APIVersion: "1.31"})
|
||||
assert.Equal(t, client.version, "1.35")
|
||||
}
|
||||
|
||||
type roundTripFunc func(*http.Request) (*http.Response, error)
|
||||
|
||||
func (rtf roundTripFunc) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
|
|
|
@ -139,11 +139,14 @@ func WithTLSClientConfig(cacertPath, certPath, keyPath string) Opt {
|
|||
}
|
||||
}
|
||||
|
||||
// WithVersion overrides the client version with the specified one
|
||||
// WithVersion overrides the client version with the specified one. If an empty
|
||||
// version is specified, the value will be ignored to allow version negotiation.
|
||||
func WithVersion(version string) Opt {
|
||||
return func(c *Client) error {
|
||||
if version != "" {
|
||||
c.version = version
|
||||
c.manualOverride = true
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue