mirror of https://github.com/grpc/grpc-go.git
resolver: always fall back to default resolver when target does not follow URI scheme (#1889)
Previously, any target with "://" would be handled according to the URI scheme even though it did not contain a third slash.
This commit is contained in:
parent
9aba04495f
commit
90dca43332
|
@ -54,7 +54,10 @@ func parseTarget(target string) (ret resolver.Target) {
|
||||||
if !ok {
|
if !ok {
|
||||||
return resolver.Target{Endpoint: target}
|
return resolver.Target{Endpoint: target}
|
||||||
}
|
}
|
||||||
ret.Authority, ret.Endpoint, _ = split2(ret.Endpoint, "/")
|
ret.Authority, ret.Endpoint, ok = split2(ret.Endpoint, "/")
|
||||||
|
if !ok {
|
||||||
|
return resolver.Target{Endpoint: target}
|
||||||
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,6 @@ func TestParseTargetString(t *testing.T) {
|
||||||
want resolver.Target
|
want resolver.Target
|
||||||
}{
|
}{
|
||||||
{"", resolver.Target{"", "", ""}},
|
{"", resolver.Target{"", "", ""}},
|
||||||
{"://", resolver.Target{"", "", ""}},
|
|
||||||
{":///", resolver.Target{"", "", ""}},
|
{":///", resolver.Target{"", "", ""}},
|
||||||
{"a:///", resolver.Target{"a", "", ""}},
|
{"a:///", resolver.Target{"a", "", ""}},
|
||||||
{"://a/", resolver.Target{"", "a", ""}},
|
{"://a/", resolver.Target{"", "a", ""}},
|
||||||
|
@ -70,6 +69,15 @@ func TestParseTargetString(t *testing.T) {
|
||||||
{"google.com", resolver.Target{"", "", "google.com"}},
|
{"google.com", resolver.Target{"", "", "google.com"}},
|
||||||
{"google.com/?a=b", resolver.Target{"", "", "google.com/?a=b"}},
|
{"google.com/?a=b", resolver.Target{"", "", "google.com/?a=b"}},
|
||||||
{"/unix/socket/address", resolver.Target{"", "", "/unix/socket/address"}},
|
{"/unix/socket/address", resolver.Target{"", "", "/unix/socket/address"}},
|
||||||
|
|
||||||
|
// If we can only parse part of the target.
|
||||||
|
{"://", resolver.Target{"", "", "://"}},
|
||||||
|
{"unix://domain", resolver.Target{"", "", "unix://domain"}},
|
||||||
|
{"a:b", resolver.Target{"", "", "a:b"}},
|
||||||
|
{"a/b", resolver.Target{"", "", "a/b"}},
|
||||||
|
{"a:/b", resolver.Target{"", "", "a:/b"}},
|
||||||
|
{"a//b", resolver.Target{"", "", "a//b"}},
|
||||||
|
{"a://b", resolver.Target{"", "", "a://b"}},
|
||||||
} {
|
} {
|
||||||
got := parseTarget(test.targetStr)
|
got := parseTarget(test.targetStr)
|
||||||
if got != test.want {
|
if got != test.want {
|
||||||
|
|
Loading…
Reference in New Issue