Diff
1diff --git a/pkg/daemon/daemon.go b/pkg/daemon/daemon.go
2index ca821d261e579571312bac46bd8554c62197a1af..de65cba75d3873b5dde46ab096be431fb02b3597 100644
3--- a/pkg/daemon/daemon.go
4+++ b/pkg/daemon/daemon.go
5@@ -67,16 +67,21 @@ func NewGitDaemon(ctx context.Context) (*GitDaemon, error) {
6 conns: connections{m: make(map[net.Conn]struct{})},
7 logger: log.FromContext(ctx).WithPrefix("gitdaemon"),
8 }
9- listener, err := net.Listen("tcp", d.addr)
10- if err != nil {
11- return nil, err
12- }
13- d.listener = listener
14 return d, nil
15 }
16
17 // Start starts the Git TCP daemon.
18 func (d *GitDaemon) Start() error {
19+ // listen on the socket
20+ {
21+ listener, err := net.Listen("tcp", d.addr)
22+ if err != nil {
23+ return err
24+ }
25+ d.listener = listener
26+ }
27+
28+ // close eventual connections to the socket
29 defer d.listener.Close() // nolint: errcheck
30
31 d.wg.Add(1)
32@@ -308,6 +313,11 @@ func (d *GitDaemon) Close() error {
33
34 // Shutdown gracefully shuts down the daemon.
35 func (d *GitDaemon) Shutdown(ctx context.Context) error {
36+ // in the case when git daemon was never started
37+ if d.listener == nil {
38+ return nil
39+ }
40+
41 d.once.Do(func() { close(d.finished) })
42 err := d.listener.Close()
43 finished := make(chan struct{}, 1)