3aa71e0add8a9678e209d0357d83068c6bc6702a

Author
Jonatan Wallmander <jonatan@vovoid.com>
Committer
GitHub <noreply@github.com>
Date

Message

fix: git daemon listens only when starting it (#607)

This was inconsistent with the other servers.

Co-authored-by: Jonatan Wallmander <jonatan.wallmander@kdab.com>

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)