Skip to content

Commit b438d3d

Browse files
authored
fix: handle quotes in dnsaddr results (#378)
Remove `"` and `'` characters from DNSADDR results as they sometimes appear in the output.
1 parent c89a872 commit b438d3d

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

Diff for: src/resolvers/dnsaddr.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ export const dnsaddrResolver: Resolver<DNSADDROptions> = async function dnsaddrR
4545
const output: string[] = []
4646

4747
for (const answer of result.Answer) {
48-
const addr = answer.data.split('=')[1]
48+
const addr = answer.data
49+
.replace(/["']/g, '')
50+
.trim()
51+
.split('=')[1]
4952

5053
if (addr == null) {
5154
continue

Diff for: test/resolvers.spec.ts

+48
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ const stubs: Record<string, string[]> = {
3939
],
4040
'_dnsaddr.self-referential.io': [
4141
'dnsaddr=/dnsaddr/self-referential.io'
42+
],
43+
'_dnsaddr.double-quoted-answer.io': [
44+
'"dnsaddr=/ip4/147.75.83.83/tcp/4001/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb"'
45+
],
46+
'_dnsaddr.single-quoted-answer.io': [
47+
"'dnsaddr=/ip4/147.75.83.83/tcp/4001/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb'"
48+
],
49+
'_dnsaddr.mixed-quoted-answer.io': [
50+
'"\'""" dnsaddr=/ip4/147.75.83.83/tcp/4001/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb" "'
4251
]
4352
}
4453

@@ -158,5 +167,44 @@ describe('multiaddr resolve', () => {
158167

159168
await expect(resolvePromise).to.eventually.be.rejected().with.property('code', 'ERR_MAX_RECURSIVE_DEPTH_REACHED')
160169
})
170+
171+
it('should handle double quotes', async () => {
172+
const ma = multiaddr('/dnsaddr/double-quoted-answer.io')
173+
174+
// Resolve
175+
const resolvedMas = await ma.resolve({
176+
dns
177+
})
178+
179+
// Should ignore double quotes
180+
expect(resolvedMas).to.have.lengthOf(1)
181+
expect(resolvedMas[0].toString()).to.equal('/ip4/147.75.83.83/tcp/4001/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb')
182+
})
183+
184+
it('should handle single quotes', async () => {
185+
const ma = multiaddr('/dnsaddr/single-quoted-answer.io')
186+
187+
// Resolve
188+
const resolvedMas = await ma.resolve({
189+
dns
190+
})
191+
192+
// Should ignore double quotes
193+
expect(resolvedMas).to.have.lengthOf(1)
194+
expect(resolvedMas[0].toString()).to.equal('/ip4/147.75.83.83/tcp/4001/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb')
195+
})
196+
197+
it('should handle mixed quotes', async () => {
198+
const ma = multiaddr('/dnsaddr/mixed-quoted-answer.io')
199+
200+
// Resolve
201+
const resolvedMas = await ma.resolve({
202+
dns
203+
})
204+
205+
// Should ignore double quotes
206+
expect(resolvedMas).to.have.lengthOf(1)
207+
expect(resolvedMas[0].toString()).to.equal('/ip4/147.75.83.83/tcp/4001/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb')
208+
})
161209
})
162210
})

0 commit comments

Comments
 (0)