aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2026-02-02 23:00:55 +0700
committerShulhan <m.shulhan@gmail.com>2026-04-15 01:16:21 +0700
commit14d652ebff33bd0e4769f47baba2574adabc494e (patch)
treeb7a80cb77674fa9e84bbbb3a8e9ae418f34d033b
parent81095845401a2ac64bc5ee43a4f9b013207d3b7e (diff)
downloadgo-x-pkgsite-14d652ebff33bd0e4769f47baba2574adabc494e.tar.xz
[DO-NOT-MERGE] cmd/pkgsite: implement socket based activation
-rw-r--r--.gitignore1
-rw-r--r--cmd/pkgsite/main.go20
-rw-r--r--go.mod3
-rw-r--r--go.sum6
4 files changed, 26 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index 17e5a31d..ee63b02a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@
*.dll
*.so
*.dylib
+/pkgsite
# Test binary, built with `go test -c`
*.test
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)
diff --git a/go.mod b/go.mod
index 06de223b..e45152b3 100644
--- a/go.mod
+++ b/go.mod
@@ -12,13 +12,14 @@ require (
contrib.go.opencensus.io/exporter/prometheus v0.1.0
contrib.go.opencensus.io/exporter/stackdriver v0.13.4
contrib.go.opencensus.io/integrations/ocsql v0.1.4
+ git.sr.ht/~shulhan/pakakeh.go v0.60.3-0.20260202092811-1e3bb9be8444
github.com/Masterminds/squirrel v1.5.2
github.com/alicebob/miniredis/v2 v2.17.0
github.com/evanw/esbuild v0.17.8
github.com/go-redis/redis/v8 v8.11.4
github.com/go-redis/redis_rate/v9 v9.1.2
github.com/golang-migrate/migrate/v4 v4.15.1
- github.com/google/go-cmp v0.6.0
+ github.com/google/go-cmp v0.7.0
github.com/google/go-replayers/httpreplay v1.0.0
github.com/google/licensecheck v0.3.1
github.com/google/safehtml v0.0.3-0.20211026203422-d6f0e11a5516
diff --git a/go.sum b/go.sum
index 5962f5ad..6de475e4 100644
--- a/go.sum
+++ b/go.sum
@@ -80,6 +80,8 @@ contrib.go.opencensus.io/integrations/ocsql v0.1.4 h1:kfg5Yyy1nYUrqzyfW5XX+dzMAS
contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
+git.sr.ht/~shulhan/pakakeh.go v0.60.3-0.20260202092811-1e3bb9be8444 h1:mqX+Z2dyfChpFOgt6gV9R5AT3oQN3pw4gMbPQLGm1DI=
+git.sr.ht/~shulhan/pakakeh.go v0.60.3-0.20260202092811-1e3bb9be8444/go.mod h1:1MkKXbLZRHTcnheeSEbRpGztkym4Yxzh90ep+jCxbDc=
github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k=
github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck=
@@ -538,8 +540,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/go-github/v35 v35.2.0/go.mod h1:s0515YVTI+IMrDoy9Y4pHt9ShGpzHvHO8rZ7L7acgvs=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/go-replayers/httpreplay v1.0.0 h1:8SmT8fUYM4nueF+UnXIX8LJxNTb1vpPuknXz+yTWzL4=