aboutsummaryrefslogtreecommitdiff
path: root/plugin/pkg/parse
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/pkg/parse')
-rw-r--r--plugin/pkg/parse/host.go8
-rw-r--r--plugin/pkg/parse/host_test.go10
-rw-r--r--plugin/pkg/parse/transport.go3
3 files changed, 21 insertions, 0 deletions
diff --git a/plugin/pkg/parse/host.go b/plugin/pkg/parse/host.go
index 9206a033d..c396dc853 100644
--- a/plugin/pkg/parse/host.go
+++ b/plugin/pkg/parse/host.go
@@ -33,6 +33,14 @@ func HostPortOrFile(s ...string) ([]string, error) {
var servers []string
for _, h := range s {
trans, host := Transport(h)
+ if len(host) == 0 {
+ return servers, fmt.Errorf("invalid address: %q", h)
+ }
+
+ if trans == transport.UNIX {
+ servers = append(servers, trans+"://"+host)
+ continue
+ }
addr, _, err := net.SplitHostPort(host)
diff --git a/plugin/pkg/parse/host_test.go b/plugin/pkg/parse/host_test.go
index 611f8284f..0b5f6f1ff 100644
--- a/plugin/pkg/parse/host_test.go
+++ b/plugin/pkg/parse/host_test.go
@@ -58,6 +58,16 @@ func TestHostPortOrFile(t *testing.T) {
"",
true,
},
+ {
+ "unix:///var/run/g.sock",
+ "unix:///var/run/g.sock",
+ false,
+ },
+ {
+ "unix://",
+ "",
+ true,
+ },
}
err := os.WriteFile("resolv.conf", []byte("nameserver 127.0.0.1\n"), 0600)
diff --git a/plugin/pkg/parse/transport.go b/plugin/pkg/parse/transport.go
index d632120d7..0da640856 100644
--- a/plugin/pkg/parse/transport.go
+++ b/plugin/pkg/parse/transport.go
@@ -27,6 +27,9 @@ func Transport(s string) (trans string, addr string) {
s = s[len(transport.HTTPS+"://"):]
return transport.HTTPS, s
+ case strings.HasPrefix(s, transport.UNIX+"://"):
+ s = s[len(transport.UNIX+"://"):]
+ return transport.UNIX, s
}
return transport.DNS, s