From 96309ab256d47a066564ee5f35ed46be6139c311 Mon Sep 17 00:00:00 2001 From: Nikita Maslov Date: Tue, 21 Sep 2021 02:03:33 +0300 Subject: [PATCH 1/2] Use uri.Path for UNIX domain socket paths --- netconn.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netconn.go b/netconn.go index bff4e812..053c4ee8 100644 --- a/netconn.go +++ b/netconn.go @@ -62,7 +62,7 @@ func openConnection(uri *url.URL, tlsc *tls.Config, timeout time.Duration, heade } return conn, nil case "unix": - conn, err := net.DialTimeout("unix", uri.Host, timeout) + conn, err := net.DialTimeout("unix", uri.Path, timeout) if err != nil { return nil, err } From 387914c9ac367aa430376533acd7ffbcad95f274 Mon Sep 17 00:00:00 2001 From: Nikita Maslov Date: Tue, 21 Sep 2021 12:18:44 +0300 Subject: [PATCH 2/2] Check uri.Host in UNIX paths first (for compatibility) --- netconn.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/netconn.go b/netconn.go index 053c4ee8..c1238496 100644 --- a/netconn.go +++ b/netconn.go @@ -62,7 +62,17 @@ func openConnection(uri *url.URL, tlsc *tls.Config, timeout time.Duration, heade } return conn, nil case "unix": - conn, err := net.DialTimeout("unix", uri.Path, timeout) + var conn net.Conn + var err error + + // this check is preserved for compatibility with older versions + // which used uri.Host only (it works for local paths, e.g. unix://socket.sock in current dir) + if len(uri.Host) > 0 { + conn, err = net.DialTimeout("unix", uri.Host, timeout) + } else { + conn, err = net.DialTimeout("unix", uri.Path, timeout) + } + if err != nil { return nil, err }