diff options
Diffstat (limited to 'cmd/pkgsite/main.go')
| -rw-r--r-- | cmd/pkgsite/main.go | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/cmd/pkgsite/main.go b/cmd/pkgsite/main.go index 49b99a59..eae690e0 100644 --- a/cmd/pkgsite/main.go +++ b/cmd/pkgsite/main.go @@ -60,6 +60,7 @@ import ( "strings" "time" + "git.sr.ht/~shulhan/pakakeh.go/lib/systemd" "golang.org/x/pkgsite/cmd/internal/pkgsite" "golang.org/x/pkgsite/internal/browser" "golang.org/x/pkgsite/internal/log" @@ -133,10 +134,27 @@ func main() { addr = ":http" } - ln, err := net.Listen("tcp", addr) + var ln net.Listener + listeners, err := systemd.Listeners(true) if err != nil { dief("%s", err) } + if len(listeners) > 1 { + dief(`too many listeners received for activation`) + } + if len(listeners) == 1 { + ln = listeners[0] + gotAddr := ln.Addr().String() + if gotAddr != addr { + dief(`invalid Listener address, got %s, want %s`, + gotAddr, addr) + } + } else { + ln, err = net.Listen("tcp", addr) + if err != nil { + dief("%s", err) + } + } url := "http://" + addr log.Infof(ctx, "Listening on addr %s", url) |
