fix(swarm): feed through context
License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
Steven Allen committed
Mar 18, 2019 at 18:55 UTC
291614848f7e4b822df4a21f7afcf4393e24444c
1 file changed
+7
-6
core/commands/swarm.go
+7
-6
@@ -370,7 +370,7 @@ ipfs swarm connect /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3
370
371
addrs := req.Arguments
372
373
- pis, err := peersWithAddresses(addrs)
373
+ pis, err := peersWithAddresses(req.Context, addrs)
374
if err != nil {
375
return err
376
}
@@ -467,9 +467,9 @@ func parseMultiaddrs(maddrs []ma.Multiaddr) (iaddrs []iaddr.IPFSAddr, err error)
467
468
// peersWithAddresses is a function that takes in a slice of string peer addresses
469
// (multiaddr + peerid) and returns a slice of properly constructed peers
470
-func peersWithAddresses(addrs []string) ([]pstore.PeerInfo, error) {
470
+func peersWithAddresses(ctx context.Context, addrs []string) ([]pstore.PeerInfo, error) {
471
// resolve addresses
472
- maddrs, err := resolveAddresses(addrs)
472
+ maddrs, err := resolveAddresses(ctx, addrs)
473
if err != nil {
474
return nil, err
475
}
@@ -500,7 +500,10 @@ func peersWithAddresses(addrs []string) ([]pstore.PeerInfo, error) {
500
}
501
502
// resolveAddresses resolves addresses parallelly
503
-func resolveAddresses(addrs []string) ([]ma.Multiaddr, error) {
503
+func resolveAddresses(ctx context.Context, addrs []string) ([]ma.Multiaddr, error) {
504
+ ctx, cancel := context.WithTimeout(ctx, dnsResolveTimeout)
505
+ defer cancel()
506
+
507
var maddrs []ma.Multiaddr
508
var wg sync.WaitGroup
509
resolveErrC := make(chan error, len(addrs))
@@ -532,9 +535,7 @@ func resolveAddresses(addrs []string) ([]ma.Multiaddr, error) {
535
wg.Add(1)
536
go func(maddr ma.Multiaddr) {
537
defer wg.Done()
535
- ctx, cancel := context.WithTimeout(context.Background(), dnsResolveTimeout)
538
raddrs, err := madns.Resolve(ctx, maddr)
537
- cancel()
539
if err != nil {
540
resolveErrC <- err
541
return