Commit 580a818b authored by vyzo's avatar vyzo

merge dial contexts where possible

parent e7b6af60
...@@ -320,6 +320,7 @@ func (s *Swarm) dialWorkerLoop(ctx context.Context, p peer.ID, reqch <-chan Dial ...@@ -320,6 +320,7 @@ func (s *Swarm) dialWorkerLoop(ctx context.Context, p peer.ID, reqch <-chan Dial
conn *Conn conn *Conn
err error err error
requests []int requests []int
dialed bool
} }
reqno := 0 reqno := 0
...@@ -454,6 +455,9 @@ loop: ...@@ -454,6 +455,9 @@ loop:
requests[reqno] = pr requests[reqno] = pr
for _, ad := range tojoin { for _, ad := range tojoin {
if !ad.dialed {
ad.ctx = s.mergeDialContexts(ad.ctx, req.Ctx)
}
ad.requests = append(ad.requests, reqno) ad.requests = append(ad.requests, reqno)
} }
...@@ -490,6 +494,7 @@ loop: ...@@ -490,6 +494,7 @@ loop:
continue continue
} }
ad.dialed = true
dialed = true dialed = true
last = i last = i
active++ active++
...@@ -581,6 +586,18 @@ func (s *Swarm) addrsForDial(ctx context.Context, p peer.ID) ([]ma.Multiaddr, er ...@@ -581,6 +586,18 @@ func (s *Swarm) addrsForDial(ctx context.Context, p peer.ID) ([]ma.Multiaddr, er
return goodAddrs, nil return goodAddrs, nil
} }
func (s *Swarm) mergeDialContexts(a, b context.Context) context.Context {
dialCtx := a
if simConnect, reason := network.GetSimultaneousConnect(b); simConnect {
if simConnect, _ := network.GetSimultaneousConnect(a); !simConnect {
dialCtx = network.WithSimultaneousConnect(dialCtx, reason)
}
}
return dialCtx
}
func (s *Swarm) dialNextAddr(ctx context.Context, p peer.ID, addr ma.Multiaddr, resch chan dialResult) error { func (s *Swarm) dialNextAddr(ctx context.Context, p peer.ID, addr ma.Multiaddr, resch chan dialResult) error {
// check the dial backoff // check the dial backoff
if forceDirect, _ := network.GetForceDirectDial(ctx); !forceDirect { if forceDirect, _ := network.GetForceDirectDial(ctx); !forceDirect {
......
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