dns.resolveSoa returns EBADRESP if hostname has a CNAME record
Personne n'a encore pris cette issue.
- Langage dominant
- JavaScript
- Étoiles
- 122k
- Forks
- 37.3k
- Merge moyen
- 4 j 2 h
- PR mergées (30 j)
- 283
Description
- Version(s): v12.16.3 / v12.18.3 / v12.18.0
- Platform: Windows / Windows Subsystem for Linux (Debian) / Red Hat Enterprise Linux Server release 7.8
- Subsystem: DNS
What steps will reproduce the bug?
const dns = require('dns');
const resolver = new dns.promises.Resolver();
// **************************************************************
async function test(hostname) {
let data = '';
console.log('hostname:', hostname);
try {
data = await resolver.resolveCname(hostname);
console.log('CNAME result:', data);
} catch (error) {
console.log('CNAME result:', error.message);
}
try {
data = await resolver.resolveSoa(hostname);
console.log('SOA result:', JSON.stringify(data));
} catch (error) {
console.log('SOA result:', error.message);
}
console.log();
}
// **************************************************************
(async function main() {
await test('support.microsoft.com');
})();
Actual Results
hostname: support.microsoft.com
CNAME result: [ 'ev.support.microsoft.com.edgekey.net' ]
SOA result: querySoa EBADRESP support.microsoft.com
Expected Results
hostname: support.microsoft.com
CNAME result: [ 'ev.support.microsoft.com.edgekey.net' ]
SOA result: querySoa ENODATA support.microsoft.com
Additional information
This seems to happen for any hostname with a CNAME record.
Another example:
hostname: store.gocomics.com
CNAME result: [ 'gocomicsstore.wpengine.com' ]
SOA result: querySoa EBADRESP store.gocomics.com
I would expect to get an 'ENODATA' instead of 'EBADRESP', as with the other resolveXXX() calls.
For a hostname with an SOA record but no CNAME, you get:
hostname: microsoft.com
CNAME result: queryCname ENODATA microsoft.com
SOA result: {"nsname":"ns1-205.azure-dns.com","hostmaster":"azuredns-
hostmaster.microsoft.com","serial":1,"refresh":3600,"retry":300,"expire":2419200,"minttl":300}
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par exécuter la reproduction fournie de dns.promises.Resolver avec un nom d’hôte qui possède un enregistrement CNAME, puis comparez resolveSoa à resolveCname ainsi que le comportement d’erreur attendu. Le payload ne mentionne aucun fichier source ni test ; localisez donc l’implémentation du résolveur DNS et ses tests de resolveSoa. C’est terminé lorsque les cibles CNAME renvoient ENODATA plutôt que EBADRESP.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, node.js
- Domaine
- networking
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100