Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -282,13 +282,12 @@ func (cli *Client) HTTPClient() *http.Client {
|
| 282 | 282 |
// ParseHostURL parses a url string, validates the string is a host url, and |
| 283 | 283 |
// returns the parsed URL |
| 284 | 284 |
func ParseHostURL(host string) (*url.URL, error) {
|
| 285 |
- protoAddrParts := strings.SplitN(host, "://", 2) |
|
| 286 |
- if len(protoAddrParts) == 1 {
|
|
| 285 |
+ proto, addr, ok := strings.Cut(host, "://") |
|
| 286 |
+ if !ok || addr == "" {
|
|
| 287 | 287 |
return nil, errors.Errorf("unable to parse docker host `%s`", host)
|
| 288 | 288 |
} |
| 289 | 289 |
|
| 290 | 290 |
var basePath string |
| 291 |
- proto, addr := protoAddrParts[0], protoAddrParts[1] |
|
| 292 | 291 |
if proto == "tcp" {
|
| 293 | 292 |
parsed, err := url.Parse("tcp://" + addr)
|
| 294 | 293 |
if err != nil {
|
| ... | ... |
@@ -64,10 +64,10 @@ func parsePingResponse(cli *Client, resp serverResponse) (types.Ping, error) {
|
| 64 | 64 |
ping.BuilderVersion = types.BuilderVersion(bv) |
| 65 | 65 |
} |
| 66 | 66 |
if si := resp.header.Get("Swarm"); si != "" {
|
| 67 |
- parts := strings.SplitN(si, "/", 2) |
|
| 67 |
+ state, role, _ := strings.Cut(si, "/") |
|
| 68 | 68 |
ping.SwarmStatus = &swarm.Status{
|
| 69 |
- NodeState: swarm.LocalNodeState(parts[0]), |
|
| 70 |
- ControlAvailable: len(parts) == 2 && parts[1] == "manager", |
|
| 69 |
+ NodeState: swarm.LocalNodeState(state), |
|
| 70 |
+ ControlAvailable: role == "manager", |
|
| 71 | 71 |
} |
| 72 | 72 |
} |
| 73 | 73 |
err := cli.checkResponseErr(resp) |