aboutsummaryrefslogtreecommitdiff
path: root/cmd/pkgsite
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/pkgsite')
-rw-r--r--cmd/pkgsite/main.go20
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)