aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/puppeth/wizard_intro.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/puppeth/wizard_intro.go')
-rw-r--r--cmd/puppeth/wizard_intro.go24
1 files changed, 18 insertions, 6 deletions
diff --git a/cmd/puppeth/wizard_intro.go b/cmd/puppeth/wizard_intro.go
index a5fea6f85..005ee47a5 100644
--- a/cmd/puppeth/wizard_intro.go
+++ b/cmd/puppeth/wizard_intro.go
@@ -24,6 +24,7 @@ import (
"os"
"path/filepath"
"strings"
+ "sync"
"github.com/ethereum/go-ethereum/log"
)
@@ -80,14 +81,25 @@ func (w *wizard) run() {
} else if err := json.Unmarshal(blob, &w.conf); err != nil {
log.Crit("Previous configuration corrupted", "path", w.conf.path, "err", err)
} else {
+ // Dial all previously known servers concurrently
+ var pend sync.WaitGroup
for server, pubkey := range w.conf.Servers {
- log.Info("Dialing previously configured server", "server", server)
- client, err := dial(server, pubkey)
- if err != nil {
- log.Error("Previous server unreachable", "server", server, "err", err)
- }
- w.servers[server] = client
+ pend.Add(1)
+
+ go func(server string, pubkey []byte) {
+ defer pend.Done()
+
+ log.Info("Dialing previously configured server", "server", server)
+ client, err := dial(server, pubkey)
+ if err != nil {
+ log.Error("Previous server unreachable", "server", server, "err", err)
+ }
+ w.lock.Lock()
+ w.servers[server] = client
+ w.lock.Unlock()
+ }(server, pubkey)
}
+ pend.Wait()
w.networkStats()
}
// Basics done, loop ad infinitum about what to do