Skip to content

Commit 59309b0

Browse files
authored
chore: add test for never-ending recursion (#375)
Ensure we don't loop forever resolving dns addrs that resolve to themselves.
1 parent 194956f commit 59309b0

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

test/resolvers.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ const stubs: Record<string, string[]> = {
3636
],
3737
'_dnsaddr.am6.bootstrap.libp2p.io': [
3838
'dnsaddr=/ip4/147.75.83.83/tcp/4001/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb'
39+
],
40+
'_dnsaddr.self-referential.io': [
41+
'dnsaddr=/dnsaddr/self-referential.io'
3942
]
4043
}
4144

@@ -143,5 +146,17 @@ describe('multiaddr resolve', () => {
143146

144147
await expect(resolvePromise).to.eventually.be.rejected().with.property('code', 'ERR_MAX_RECURSIVE_DEPTH_REACHED')
145148
})
149+
150+
it('should handle recursive loops', async () => {
151+
const ma = multiaddr('/dnsaddr/self-referential.io')
152+
153+
// Resolve
154+
const resolvePromise = ma.resolve({
155+
dns,
156+
maxRecursiveDepth: 1
157+
})
158+
159+
await expect(resolvePromise).to.eventually.be.rejected().with.property('code', 'ERR_MAX_RECURSIVE_DEPTH_REACHED')
160+
})
146161
})
147162
})

0 commit comments

Comments
 (0)