mirror of
https://github.com/minio/minio.git
synced 2025-02-03 09:55:59 -05:00
fail when endpoints point to same path locally (#5523)
This commit is contained in:
parent
e22438c8cd
commit
22897de4c7
@ -334,7 +334,7 @@ func CreateEndpoints(serverAddr string, args ...string) (string, EndpointList, S
|
|||||||
return serverAddr, endpoints, setupType, fmt.Errorf("no endpoint found for this host")
|
return serverAddr, endpoints, setupType, fmt.Errorf("no endpoint found for this host")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether same path is not used in endpoints of a host.
|
// Check whether same path is not used in endpoints of a host on different port.
|
||||||
{
|
{
|
||||||
pathIPMap := make(map[string]set.StringSet)
|
pathIPMap := make(map[string]set.StringSet)
|
||||||
for _, endpoint := range endpoints {
|
for _, endpoint := range endpoints {
|
||||||
@ -349,7 +349,6 @@ func CreateEndpoints(serverAddr string, args ...string) (string, EndpointList, S
|
|||||||
err = fmt.Errorf("path '%s' can not be served by different port on same address", endpoint.Path)
|
err = fmt.Errorf("path '%s' can not be served by different port on same address", endpoint.Path)
|
||||||
return serverAddr, endpoints, setupType, err
|
return serverAddr, endpoints, setupType, err
|
||||||
}
|
}
|
||||||
|
|
||||||
pathIPMap[endpoint.Path] = IPSet.Union(hostIPSet)
|
pathIPMap[endpoint.Path] = IPSet.Union(hostIPSet)
|
||||||
} else {
|
} else {
|
||||||
pathIPMap[endpoint.Path] = hostIPSet
|
pathIPMap[endpoint.Path] = hostIPSet
|
||||||
@ -357,6 +356,21 @@ func CreateEndpoints(serverAddr string, args ...string) (string, EndpointList, S
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check whether same path is used for more than 1 local endpoints.
|
||||||
|
{
|
||||||
|
localPathSet := set.CreateStringSet()
|
||||||
|
for _, endpoint := range endpoints {
|
||||||
|
if !endpoint.IsLocal {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if localPathSet.Contains(endpoint.Path) {
|
||||||
|
err = fmt.Errorf("path '%s' cannot be served by different address on same server", endpoint.Path)
|
||||||
|
return serverAddr, endpoints, setupType, err
|
||||||
|
}
|
||||||
|
localPathSet.Add(endpoint.Path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check whether serverAddrPort matches at least in one of port used in local endpoints.
|
// Check whether serverAddrPort matches at least in one of port used in local endpoints.
|
||||||
{
|
{
|
||||||
if !localPortSet.Contains(serverAddrPort) {
|
if !localPortSet.Contains(serverAddrPort) {
|
||||||
|
@ -257,7 +257,7 @@ func TestCreateEndpoints(t *testing.T) {
|
|||||||
Endpoint{URL: &url.URL{Path: "/d4"}, IsLocal: true},
|
Endpoint{URL: &url.URL{Path: "/d4"}, IsLocal: true},
|
||||||
}, XLSetupType, nil},
|
}, XLSetupType, nil},
|
||||||
{":9001", []string{"http://10.0.0.1:9000/export", "http://10.0.0.2:9000/export", "http://" + nonLoopBackIP + ":9001/export", "http://10.0.0.2:9001/export"}, "", EndpointList{}, -1, fmt.Errorf("path '/export' can not be served by different port on same address")},
|
{":9001", []string{"http://10.0.0.1:9000/export", "http://10.0.0.2:9000/export", "http://" + nonLoopBackIP + ":9001/export", "http://10.0.0.2:9001/export"}, "", EndpointList{}, -1, fmt.Errorf("path '/export' can not be served by different port on same address")},
|
||||||
|
{":9000", []string{"http://127.0.0.1:9000/export", "http://" + nonLoopBackIP + ":9000/export", "http://10.0.0.1:9000/export", "http://10.0.0.2:9000/export"}, "", EndpointList{}, -1, fmt.Errorf("path '/export' cannot be served by different address on same server")},
|
||||||
{":9000", []string{"http://localhost/d1", "http://localhost/d2", "http://example.org/d3", "http://example.com/d4"}, "", EndpointList{}, -1, fmt.Errorf("'localhost' resolves to loopback address is not allowed for distributed XL")},
|
{":9000", []string{"http://localhost/d1", "http://localhost/d2", "http://example.org/d3", "http://example.com/d4"}, "", EndpointList{}, -1, fmt.Errorf("'localhost' resolves to loopback address is not allowed for distributed XL")},
|
||||||
|
|
||||||
// DistXL type
|
// DistXL type
|
||||||
|
Loading…
x
Reference in New Issue
Block a user