p2p/simulations: Fix stopping exec nodes

Signed-off-by: Lewis Marshall <lewis@lmars.net>
This commit is contained in:
Lewis Marshall 2017-06-18 12:13:49 +02:00
parent 71fb11d6a0
commit 5cfb34a151

View file

@ -183,25 +183,18 @@ func (n *ExecNode) Start(snapshots map[string][]byte) (err error) {
// read the WebSocket address from the stderr logs // read the WebSocket address from the stderr logs
var wsAddr string var wsAddr string
errC := make(chan error) wsAddrC := make(chan string)
go func() { go func() {
s := bufio.NewScanner(stderrR) s := bufio.NewScanner(stderrR)
for s.Scan() { for s.Scan() {
if strings.Contains(s.Text(), "WebSocket endpoint opened:") { if strings.Contains(s.Text(), "WebSocket endpoint opened:") {
wsAddr = wsAddrPattern.FindString(s.Text()) wsAddrC <- wsAddrPattern.FindString(s.Text())
break
} }
} }
select {
case errC <- s.Err():
default:
}
}() }()
select { select {
case err := <-errC: case wsAddr = <-wsAddrC:
if err != nil { if wsAddr == "" {
return fmt.Errorf("error reading WebSocket address from stderr: %s", err)
} else if wsAddr == "" {
return errors.New("failed to read WebSocket address from stderr") return errors.New("failed to read WebSocket address from stderr")
} }
case <-time.After(10 * time.Second): case <-time.After(10 * time.Second):