diff --git a/cmd/cgat/main.go b/cmd/cgat/main.go index e9559519805b2406517fbe71cefdb5a2e6a760c4..7d8fd084085e803d31fd94eb64ddb9ff23e4c0f7 100644 --- a/cmd/cgat/main.go +++ b/cmd/cgat/main.go @@ -4,6 +4,7 @@ import ( "log" "net/http" _ "net/http/pprof" + "os" "pggat2/lib/gat" "pggat2/lib/gat/configs/pgbouncer" @@ -16,7 +17,11 @@ func main() { log.Println("Starting pggat...") - conf, err := pgbouncer.Load() + if len(os.Args) < 2 { + panic("usage: pggat <config>") + } + + conf, err := pgbouncer.Load(os.Args[1]) if err != nil { panic(err) } diff --git a/lib/gat/configs/pgbouncer/config.go b/lib/gat/configs/pgbouncer/config.go index a4829f88a1f63354a8bd8dc403fe5b30484c00e2..428577160cb750f17e17f074abeaa8afdfb72b50 100644 --- a/lib/gat/configs/pgbouncer/config.go +++ b/lib/gat/configs/pgbouncer/config.go @@ -251,8 +251,8 @@ var Default = Config{ }, } -func Load() (Config, error) { - conf, err := ini2.ReadFile("pgbouncer.ini") +func Load(config string) (Config, error) { + conf, err := ini2.ReadFile(config) if err != nil { return Config{}, err } @@ -360,9 +360,19 @@ func (T *Config) ListenAndServe(pooler *gat.Pooler) error { } } - listen := net.JoinHostPort(T.PgBouncer.ListenAddr, strconv.Itoa(T.PgBouncer.ListenPort)) + if T.PgBouncer.ListenAddr != "" { + listenAddr := T.PgBouncer.ListenAddr + if listenAddr == "*" { + listenAddr = "" + } + + listen := net.JoinHostPort(listenAddr, strconv.Itoa(T.PgBouncer.ListenPort)) - log.Println("listening on", listen) + log.Println("listening on", listen) + + return pooler.ListenAndServe(listen) + } - return pooler.ListenAndServe(listen) + // listen on unix socket + return nil } diff --git a/pgbouncer.ini b/pgbouncer.ini index 5ce00217d8bb9e16f5c1024424ed8b24cb1dfd4c..85f013d2d5270ee758ee6cac27c96267e2ff7ba5 100644 --- a/pgbouncer.ini +++ b/pgbouncer.ini @@ -1,6 +1,7 @@ [pgbouncer] -mode = transaction +pool_mode = transaction auth_file = userlist.txt +listen_addr = * [users] postgres =