22import { TimeoutError , DialError , AbortError } from '@libp2p/interface'
33import { PeerMap } from '@libp2p/peer-collections'
44import { PriorityQueue } from '@libp2p/utils/priority-queue'
5- import { resolvers , multiaddr } from '@multiformats/multiaddr'
6- import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
5+ import { multiaddr } from '@multiformats/multiaddr'
76import { Circuit } from '@multiformats/multiaddr-matcher'
87import { anySignal } from 'any-signal'
98import { setMaxListeners } from 'main-event'
@@ -20,13 +19,13 @@ import {
2019 MAX_DIAL_QUEUE_LENGTH ,
2120 LAST_DIAL_SUCCESS_KEY
2221} from './constants.js'
23- import { resolveMultiaddrs } from './utils .js'
22+ import { resolveMultiaddr , dnsaddrResolver } from './resolvers/index .js'
2423import { DEFAULT_DIAL_PRIORITY } from './index.js'
25- import type { AddressSorter , ComponentLogger , Logger , Connection , ConnectionGater , Metrics , PeerId , Address , PeerStore , PeerRouting , IsDialableOptions , OpenConnectionProgressEvents } from '@libp2p/interface'
24+ import type { AddressSorter , ComponentLogger , Logger , Connection , ConnectionGater , Metrics , PeerId , Address , PeerStore , PeerRouting , IsDialableOptions , OpenConnectionProgressEvents , MultiaddrResolver } from '@libp2p/interface'
2625import type { OpenConnectionOptions , TransportManager } from '@libp2p/interface-internal'
2726import type { PriorityQueueJobOptions } from '@libp2p/utils/priority-queue'
2827import type { DNS } from '@multiformats/dns'
29- import type { Multiaddr , Resolver } from '@multiformats/multiaddr'
28+ import type { Multiaddr } from '@multiformats/multiaddr'
3029import type { ProgressOptions } from 'progress-events'
3130
3231export interface PendingDialTarget {
@@ -45,7 +44,7 @@ interface DialerInit {
4544 maxDialQueueLength ?: number
4645 maxPeerAddrsToDial ?: number
4746 dialTimeout ?: number
48- resolvers ?: Record < string , Resolver >
47+ resolvers ?: Record < string , MultiaddrResolver >
4948 connections ?: PeerMap < Connection [ ] >
5049}
5150
@@ -80,6 +79,7 @@ export class DialQueue {
8079 private shutDownController : AbortController
8180 private readonly connections : PeerMap < Connection [ ] >
8281 private readonly log : Logger
82+ private readonly resolvers : Record < string , MultiaddrResolver >
8383
8484 constructor ( components : DialQueueComponents , init : DialerInit = { } ) {
8585 this . addressSorter = init . addressSorter
@@ -89,14 +89,11 @@ export class DialQueue {
8989 this . connections = init . connections ?? new PeerMap ( )
9090 this . log = components . logger . forComponent ( 'libp2p:connection-manager:dial-queue' )
9191 this . components = components
92+ this . resolvers = init . resolvers ?? defaultOptions . resolvers
9293
9394 this . shutDownController = new AbortController ( )
9495 setMaxListeners ( Infinity , this . shutDownController . signal )
9596
96- for ( const [ key , value ] of Object . entries ( init . resolvers ?? { } ) ) {
97- resolvers . set ( key , value )
98- }
99-
10097 // controls dial concurrency
10198 this . queue = new PriorityQueue ( {
10299 concurrency : init . maxParallelDials ?? defaultOptions . maxParallelDials ,
@@ -415,10 +412,10 @@ export class DialQueue {
415412 // dnsaddrs are resolved
416413 let resolvedAddresses = ( await Promise . all (
417414 addrs . map ( async addr => {
418- const result = await resolveMultiaddrs ( addr . multiaddr , {
415+ const result = await resolveMultiaddr ( addr . multiaddr , this . resolvers , {
419416 dns : this . components . dns ,
420- ... options ,
421- log : this . log
417+ log : this . log ,
418+ ... options
422419 } )
423420
424421 if ( result . length === 1 && result [ 0 ] . equals ( addr . multiaddr ) ) {
0 commit comments