From 4f98d81aea0e20b985243c57144eccc69c9a18a0 Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Fri, 29 Sep 2023 17:48:14 -0500 Subject: [PATCH] fix --- lib/gat/listen.go | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/gat/listen.go b/lib/gat/listen.go index f6e81380..baa1090c 100644 --- a/lib/gat/listen.go +++ b/lib/gat/listen.go @@ -5,6 +5,8 @@ import ( "encoding/json" "fmt" "net" + "strconv" + "strings" "github.com/caddyserver/caddy/v2" "go.uber.org/zap" @@ -41,15 +43,35 @@ func (T *Listener) accept() (*fed.Conn, error) { func (T *Listener) Provision(ctx caddy.Context) error { T.log = ctx.Logger() - var err error - T.networkAddress, err = caddy.ParseNetworkAddressWithDefaults(T.Address, "tcp", 5432) - if err != nil { - return fmt.Errorf("parsing address: %v", err) + if strings.HasPrefix(T.Address, "/") { + // unix address + T.networkAddress = caddy.NetworkAddress{ + Network: "unix", + Host: T.Address, + } + } else { + // tcp address + host, rawPort, ok := strings.Cut(T.Address, ":") + + var port = 5432 + if ok { + var err error + port, err = strconv.Atoi(rawPort) + if err != nil { + return fmt.Errorf("parsing port: %v", err) + } + } + + T.networkAddress = caddy.NetworkAddress{ + Network: "tcp", + Host: host, + StartPort: uint(port), + EndPort: uint(port), + } } if T.SSL != nil { - var val any - val, err = ctx.LoadModule(T, "SSL") + val, err := ctx.LoadModule(T, "SSL") if err != nil { return fmt.Errorf("loading ssl module: %v", err) } -- GitLab