diff options
Diffstat (limited to 'forged/internal/incoming/web/web.go')
-rw-r--r-- | forged/internal/incoming/web/web.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/forged/internal/incoming/web/web.go b/forged/internal/incoming/web/web.go index e4675f0..a95b650 100644 --- a/forged/internal/incoming/web/web.go +++ b/forged/internal/incoming/web/web.go @@ -1,6 +1,7 @@ package web import ( + "context" "fmt" "net/http" "time" @@ -48,8 +49,19 @@ func New(config Config) (server *Server) { } } -func (server *Server) Run() (err error) { +func (server *Server) Run(ctx context.Context) (err error) { listener, err := misc.Listen(server.net, server.addr) + defer func() { + _ = listener.Close() + }() + + go func() { + <-ctx.Done() + _ = server.httpServer.Close() + _ = listener.Close() // unnecessary? + // TODO: Log the error + }() + if err = server.httpServer.Serve(listener); err != nil { return fmt.Errorf("serve web: %w", err) } |