Commit 71efb2cc authored by Jeromy's avatar Jeromy
Browse files

swarm: perform backoff check before taking dialsync lock

parent b45c8979
...@@ -255,16 +255,16 @@ func (s *Swarm) gatedDialAttempt(ctx context.Context, p peer.ID) (*Conn, error) ...@@ -255,16 +255,16 @@ func (s *Swarm) gatedDialAttempt(ctx context.Context, p peer.ID) (*Conn, error)
return conn, nil return conn, nil
} }
// check if there's an ongoing dial to this peer
if ok, wait := s.dsync.Lock(p); ok {
defer s.dsync.Unlock(p)
// if this peer has been backed off, lets get out of here // if this peer has been backed off, lets get out of here
if s.backf.Backoff(p) { if s.backf.Backoff(p) {
log.Event(ctx, "swarmDialBackoff", logdial) log.Event(ctx, "swarmDialBackoff", logdial)
return nil, ErrDialBackoff return nil, ErrDialBackoff
} }
// check if there's an ongoing dial to this peer
if ok, wait := s.dsync.Lock(p); ok {
defer s.dsync.Unlock(p)
// ok, we have been charged to dial! let's do it. // ok, we have been charged to dial! let's do it.
// if it succeeds, dial will add the conn to the swarm itself. // if it succeeds, dial will add the conn to the swarm itself.
defer log.EventBegin(ctx, "swarmDialAttemptStart", logdial).Done() defer log.EventBegin(ctx, "swarmDialAttemptStart", logdial).Done()
...@@ -285,13 +285,6 @@ func (s *Swarm) gatedDialAttempt(ctx context.Context, p peer.ID) (*Conn, error) ...@@ -285,13 +285,6 @@ func (s *Swarm) gatedDialAttempt(ctx context.Context, p peer.ID) (*Conn, error)
} else { } else {
// we did not dial. we must wait for someone else to dial. // we did not dial. we must wait for someone else to dial.
// check whether we should backoff first...
if s.backf.Backoff(p) {
log.Event(ctx, "swarmDialBackoff", logdial)
return nil, ErrDialBackoff
}
defer log.EventBegin(ctx, "swarmDialWait", logdial).Done() defer log.EventBegin(ctx, "swarmDialWait", logdial).Done()
select { select {
case <-wait: // wait for that other dial to finish. case <-wait: // wait for that other dial to finish.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment