diff options
| author | Shulhan <ms@kilabit.info> | 2026-02-02 16:22:48 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2026-02-02 16:28:11 +0700 |
| commit | 1e3bb9be8444082dc1ada7f76a727b9a9f764d47 (patch) | |
| tree | f2128fc6e0660cc0d672bf886c593e1b87a5c014 | |
| parent | 23c576b28ac9bd180155e99f5f07f9d0bac3436e (diff) | |
| download | pakakeh.go-1e3bb9be8444082dc1ada7f76a727b9a9f764d47.tar.xz | |
lib/http: add field Listener to ServerOptions
The field Listener allow user to pass [net.Listener] for accepting new
connection using [http.Serve] or [http.ServeTLS].
| -rw-r--r-- | CHANGELOG.adoc | 5 | ||||
| -rw-r--r-- | lib/http/server.go | 12 | ||||
| -rw-r--r-- | lib/http/server_options.go | 6 |
3 files changed, 21 insertions, 2 deletions
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 551b0d3f..a0f4c5cd 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -38,6 +38,11 @@ Legend, [#v0_61_0] == pakakeh.go v0.61.0 (2026-xx-xx) +**🌼 lib/http: add field Listener to ServerOptions** + +The field Listener allow user to pass [net.Listener] for accepting new +connection using [http.Serve] or [http.ServeTLS]. + **🌱 lib/systemd: new package for socket-based activation** The `lib/systemd` package implement function `Listeners` that return list of diff --git a/lib/http/server.go b/lib/http/server.go index 4c89032b..76713308 100644 --- a/lib/http/server.go +++ b/lib/http/server.go @@ -352,9 +352,17 @@ func (srv *Server) ServeHTTP(res http.ResponseWriter, req *http.Request) { // Start the HTTP server. func (srv *Server) Start() (err error) { if srv.Server.TLSConfig == nil { - err = srv.Server.ListenAndServe() + if srv.Options.Listener == nil { + err = srv.Server.ListenAndServe() + } else { + err = srv.Server.Serve(srv.Options.Listener) + } } else { - err = srv.Server.ListenAndServeTLS("", "") + if srv.Options.Listener == nil { + err = srv.Server.ListenAndServeTLS(``, ``) + } else { + err = srv.Server.ServeTLS(srv.Options.Listener, ``, ``) + } } if errors.Is(err, http.ErrServerClosed) { err = nil diff --git a/lib/http/server_options.go b/lib/http/server_options.go index 9ccb3e65..d51fe381 100644 --- a/lib/http/server_options.go +++ b/lib/http/server_options.go @@ -6,6 +6,7 @@ package http import ( "io" "log" + "net" "net/http" "git.sr.ht/~shulhan/pakakeh.go/lib/memfs" @@ -13,6 +14,11 @@ import ( // ServerOptions define an options to initialize HTTP server. type ServerOptions struct { + // Listener define the network listener to be used for serving HTTP + // connection. + // The Listener can be activated using systemd socket. + Listener net.Listener + // Memfs contains the content of file systems to be served in memory. // The MemFS instance to be served should be already embedded in Go // file, generated using memfs.MemFS.GoEmbed(). |
