Diff
1diff --git a/pkg/daemon/daemon.go b/pkg/daemon/daemon.go
2index 2f7fd77e040eb8fb797e01481d61b32afd94bfb7..bbcdaa52bf3934d528a5311debc114b5f5bfe687 100644
3--- a/pkg/daemon/daemon.go
4+++ b/pkg/daemon/daemon.go
5@@ -3,6 +3,7 @@ package daemon
6 import (
7 "bytes"
8 "context"
9+ "errors"
10 "fmt"
11 "net"
12 "path/filepath"
13@@ -43,16 +44,17 @@ var ErrServerClosed = fmt.Errorf("git: %w", net.ErrClosed)
14
15 // GitDaemon represents a Git daemon.
16 type GitDaemon struct {
17- ctx context.Context
18- addr string
19- finished chan struct{}
20- conns connections
21- cfg *config.Config
22- be *backend.Backend
23- wg sync.WaitGroup
24- once sync.Once
25- logger *log.Logger
26- done atomic.Bool // indicates if the server has been closed
27+ ctx context.Context
28+ addr string
29+ finished chan struct{}
30+ conns connections
31+ cfg *config.Config
32+ be *backend.Backend
33+ wg sync.WaitGroup
34+ once sync.Once
35+ logger *log.Logger
36+ done atomic.Bool // indicates if the server has been closed
37+ listeners []net.Listener
38 }
39
40 // NewDaemon returns a new Git daemon.
41@@ -91,7 +93,7 @@ func (d *GitDaemon) Serve(listener net.Listener) error {
42
43 d.wg.Add(1)
44 defer d.wg.Done()
45- defer listener.Close() //nolint:errcheck
46+ d.listeners = append(d.listeners, listener)
47
48 var tempDelay time.Duration
49 for {