diff options
| author | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2026-02-23 19:53:35 +0530 |
|---|---|---|
| committer | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2026-02-23 19:53:35 +0530 |
| commit | ce1a721f19fe22cad661d837a10298b98bc05214 (patch) | |
| tree | 04c4d11e9047afb5cc06ed339e63dd10e9988293 | |
| parent | Split out ChainHandler (diff) | |
| download | kit-ce1a721f19fe22cad661d837a10298b98bc05214.tar kit-ce1a721f19fe22cad661d837a10298b98bc05214.tar.gz kit-ce1a721f19fe22cad661d837a10298b98bc05214.tar.bz2 kit-ce1a721f19fe22cad661d837a10298b98bc05214.tar.lz kit-ce1a721f19fe22cad661d837a10298b98bc05214.tar.xz kit-ce1a721f19fe22cad661d837a10298b98bc05214.tar.zst kit-ce1a721f19fe22cad661d837a10298b98bc05214.zip | |
Use go systemd package
| -rw-r--r-- | go.mod | 7 | ||||
| -rw-r--r-- | go.sum | 4 | ||||
| -rw-r--r-- | http/http_test.go | 1 | ||||
| -rw-r--r-- | http/systemd_linux.go | 48 |
4 files changed, 10 insertions, 50 deletions
@@ -1,5 +1,8 @@ module go.sudomsg.com/kit -go 1.25.0 +go 1.26.0 -require golang.org/x/sync v0.19.0 +require ( + github.com/coreos/go-systemd/v22 v22.7.0 + golang.org/x/sync v0.19.0 +) @@ -1,4 +1,4 @@ -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= diff --git a/http/http_test.go b/http/http_test.go index 603dce3..d7eb3c4 100644 --- a/http/http_test.go +++ b/http/http_test.go @@ -51,4 +51,3 @@ func TestRunHTTPServers(t *testing.T) { } }) } - diff --git a/http/systemd_linux.go b/http/systemd_linux.go index 9b52bd6..bf1e6a1 100644 --- a/http/systemd_linux.go +++ b/http/systemd_linux.go @@ -3,55 +3,13 @@ package http import ( - "fmt" - "net" - "os" - "strconv" + "github.com/coreos/go-systemd/v22/activation" ) func getSystemdListeners() (Listeners, error) { - pidStr := os.Getenv("LISTEN_PID") - fdStr := os.Getenv("LISTEN_FDS") - - if pidStr == "" || fdStr == "" { - return nil, nil // Not running under systemd - } - - pid, err := strconv.Atoi(pidStr) + lns, err := activation.Listeners() if err != nil { - // Not our activation — another process might have inherited the env. - return nil, nil - } - if pid != os.Getpid() { - return nil, fmt.Errorf("LISTEN_PID %d does not match current PID %d", pid, os.Getpid()) - } - - defer func() { - _ = os.Unsetenv("LISTEN_PID") - _ = os.Unsetenv("LISTEN_FDS") - }() - - nfds, err := strconv.ParseUint(fdStr, 10, 64) - if err != nil { - return nil, fmt.Errorf("invalid LISTEN_FDS: %w", err) - } - if nfds == 0 { - return nil, nil // Nothing to do - } - - lns := make(Listeners, 0, nfds) - for i := range nfds { - fd := i + 3 - file := os.NewFile(uintptr(fd), fmt.Sprintf("fd_%d", fd)) - if file == nil { - return nil, fmt.Errorf("fd %d was nil", fd) - } - ln, err := net.FileListener(file) - if err != nil { - file.Close() - return nil, fmt.Errorf("failed to create listener from fd %d: %w", fd, err) - } - lns = append(lns, ln) + return nil, err } return lns, nil |
