WIP changes for CNAME fix
This commit is contained in:
		
							parent
							
								
									ad61360a22
								
							
						
					
					
						commit
						148bda8afc
					
				@ -422,14 +422,37 @@ module.exports.query = function (input, query, cb) {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    myRecords = someRecords;
 | 
					    myRecords = someRecords;
 | 
				
			||||||
    if (255 !== query.question[0].type && 'ANY' !== query.question[0].typeName) {
 | 
					 | 
				
			||||||
      myRecords = myRecords.filter(function (r) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return ((r.type && r.type === query.question[0].type)
 | 
					    // If we had an ANY query then we don't need to filter out results
 | 
				
			||||||
 | 
					    if (255 !== query.question[0].type && 'ANY' !== query.question[0].typeName) {
 | 
				
			||||||
 | 
					      var hasA = false;
 | 
				
			||||||
 | 
					      var hasCname = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // We should only return the records that match the query,
 | 
				
			||||||
 | 
					      // except in the case of A/AAAA in which case we should also collect the CNAME
 | 
				
			||||||
 | 
					      myRecords = myRecords.filter(function (r) {
 | 
				
			||||||
 | 
					        var passCnames = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!hasA && ('A' === query.question[0].typeName || 'AAAA' === query.question[0].typeName)) {
 | 
				
			||||||
 | 
					          passCnames = ('CNAME' === r.type ||'CNAME' === r.typeName);
 | 
				
			||||||
 | 
					          hasCname = hasCname || passCnames;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        hasA = hasA || ('A' === r.type || 'A' === r.typeName || 'AAAA' === r.type || 'AAAA' === r.typeName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return passCnames || ((r.type && r.type === query.question[0].type)
 | 
				
			||||||
          || (r.type && r.type === query.question[0].typeName)
 | 
					          || (r.type && r.type === query.question[0].typeName)
 | 
				
			||||||
          || (r.typeName && r.typeName === query.question[0].typeName)
 | 
					          || (r.typeName && r.typeName === query.question[0].typeName)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // A and AAAA will also return CNAME records
 | 
				
			||||||
 | 
					      // but we filter out the CNAME records unless there are no A / AAAA records
 | 
				
			||||||
 | 
					      if (hasA && hasCname && ('A' === query.question[0].typeName || 'AAAA' === query.question[0].typeName)) {
 | 
				
			||||||
 | 
					        myRecords = myRecords.forEach(function (r) {
 | 
				
			||||||
 | 
					          return 'CNAME' !== r.type && 'CNAME' !== r.typeName;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (myRecords.length) {
 | 
					    if (myRecords.length) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user