aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/dial.go
diff options
context:
space:
mode:
authorYondon Fu <yondon.fu@gmail.com>2017-12-19 06:17:41 +0800
committerYondon Fu <yondon.fu@gmail.com>2017-12-19 06:17:41 +0800
commit3857cdc267e3192697f561df0a0f827f65dfb6b5 (patch)
tree401c52c4972a68229ea283a394a0b0a5f3cfdc8e /p2p/dial.go
parenta5330fe0c569b75cb8a524f60f7e8dc06498262b (diff)
parentfe070ab5c32702033489f1b9d1655ea1b894c29e (diff)
downloaddexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.gz
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.bz2
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.lz
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.xz
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.zst
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.zip
Merge branch 'master' into abi-offset-fixed-arrays
Diffstat (limited to 'p2p/dial.go')
-rw-r--r--p2p/dial.go27
1 files changed, 16 insertions, 11 deletions
diff --git a/p2p/dial.go b/p2p/dial.go
index 2d9e3a0ed..f5ff2c211 100644
--- a/p2p/dial.go
+++ b/p2p/dial.go
@@ -157,7 +157,7 @@ func (s *dialstate) removeStatic(n *discover.Node) {
}
func (s *dialstate) newTasks(nRunning int, peers map[discover.NodeID]*Peer, now time.Time) []task {
- if s.start == (time.Time{}) {
+ if s.start.IsZero() {
s.start = now
}
@@ -291,11 +291,14 @@ func (t *dialTask) Do(srv *Server) {
return
}
}
- success := t.dial(srv, t.dest)
- // Try resolving the ID of static nodes if dialing failed.
- if !success && t.flags&staticDialedConn != 0 {
- if t.resolve(srv) {
- t.dial(srv, t.dest)
+ err := t.dial(srv, t.dest)
+ if err != nil {
+ log.Trace("Dial error", "task", t, "err", err)
+ // Try resolving the ID of static nodes if dialing failed.
+ if _, ok := err.(*dialError); ok && t.flags&staticDialedConn != 0 {
+ if t.resolve(srv) {
+ t.dial(srv, t.dest)
+ }
}
}
}
@@ -334,16 +337,18 @@ func (t *dialTask) resolve(srv *Server) bool {
return true
}
+type dialError struct {
+ error
+}
+
// dial performs the actual connection attempt.
-func (t *dialTask) dial(srv *Server, dest *discover.Node) bool {
+func (t *dialTask) dial(srv *Server, dest *discover.Node) error {
fd, err := srv.Dialer.Dial(dest)
if err != nil {
- log.Trace("Dial error", "task", t, "err", err)
- return false
+ return &dialError{err}
}
mfd := newMeteredConn(fd, false)
- srv.SetupConn(mfd, t.flags, dest)
- return true
+ return srv.SetupConn(mfd, t.flags, dest)
}
func (t *dialTask) String() string {