Skip to content

Commit 6ae62f0

Browse files
committed
use sync.WaitGroup
Less handrolling, more idiomatic and easier to extend if need be.
1 parent 83c3563 commit 6ae62f0

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

cmd/yggdrasil/main.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ func main() {
235235
}
236236
if n.admin != nil {
237237
n.admin.SetupAdminHandlers()
238+
n.admin.Created.Add(1)
238239
}
239240
}
240241

@@ -284,9 +285,10 @@ func main() {
284285
// Change user if requested
285286
if *chuserto != "" {
286287
// Wait for other goroutines to finish potentially privileged tasks before dropping privileges.
287-
doWait := n.admin != nil
288-
// control socket: UNIX requires filesystem permissions, TCP may use a low privileged port.
289-
for ; doWait; doWait = !n.admin.Created {}
288+
if n.admin != nil {
289+
// control socket: UNIX requires filesystem permissions, TCP may use a low privileged port.
290+
n.admin.Created.Wait()
291+
}
290292

291293
err = chuser(*chuserto)
292294
if err != nil {

src/admin/admin.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import (
88
"net/url"
99
"os"
1010
"sort"
11-
1211
"strings"
12+
"sync"
1313
"time"
1414

1515
"github.com/yggdrasil-network/yggdrasil-go/src/core"
@@ -26,7 +26,7 @@ type AdminSocket struct {
2626
config struct {
2727
listenaddr ListenAddress
2828
}
29-
Created bool
29+
Created sync.WaitGroup
3030
}
3131

3232
type AdminSocketRequest struct {
@@ -275,7 +275,7 @@ func (a *AdminSocket) listen() {
275275
a.log.Errorf("Admin socket failed to listen: %v", err)
276276
os.Exit(1)
277277
}
278-
a.Created = true
278+
a.Created.Done()
279279
a.log.Infof("%s admin socket listening on %s",
280280
strings.ToUpper(a.listener.Addr().Network()),
281281
a.listener.Addr().String())

0 commit comments

Comments
 (0)