Skip to content

Commit 2604cdb

Browse files
author
Lance Cooper
committed
Fix panic when attempting to bind multiple used ports.
1 parent 2a589c9 commit 2604cdb

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

services.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (manager *serviceManager) Start() error {
6969
}
7070

7171
running := &sync.WaitGroup{}
72-
fail := make(chan error)
72+
fail := make(chan error, len(manager.services))
7373

7474
for _, service := range manager.services {
7575
running.Add(1)
@@ -98,16 +98,24 @@ func (manager *serviceManager) Start() error {
9898
close(done)
9999
}()
100100

101-
var err error
101+
faults := &multiError{}
102102
select {
103103
case <-done:
104-
// All ok.
105-
case err = <-fail:
106-
// At least one has failed.
107-
close(fail)
104+
case err := <-fail:
105+
faults.AddError(err)
106+
// NOTE(lcooper): We'll bail eventually, collect all errors first.
107+
Loop:
108+
for {
109+
select {
110+
case err := <-fail:
111+
faults.AddError(err)
112+
case <-time.After(500 * time.Millisecond):
113+
break Loop
114+
}
115+
}
108116
}
109117

110-
return err
118+
return faults.AsError()
111119
}
112120

113121
func (manager *serviceManager) Reload() error {

0 commit comments

Comments
 (0)