in resolver/src/main/java/org/apache/james/jspf/terms/AMechanism.java [257:296]
public DNSLookupContinuation onDNSResponse(DNSResponse response, SPFSession spfSession)
throws PermErrorException, TempErrorException, NoneException, NeutralException {
List<String> listAData = null;
try {
listAData = response.getResponse();
} catch (TimeoutException e) {
throw new TempErrorException("Timeout querying dns server");
}
// no a records just return null
if (listAData == null) {
spfSession.setAttribute(Directive.ATTRIBUTE_MECHANISM_RESULT, Boolean.FALSE);
return null;
}
Boolean ipv4check = (Boolean) spfSession.getAttribute(ATTRIBUTE_AMECHANISM_IPV4CHECK);
if (ipv4check.booleanValue()) {
IPAddr checkAddress = IPAddr.getAddress(spfSession.getIpAddress(),
getIp4cidr());
if (checkAddressList(checkAddress, listAData, getIp4cidr())) {
spfSession.setAttribute(Directive.ATTRIBUTE_MECHANISM_RESULT, Boolean.TRUE);
return null;
}
} else {
IPAddr checkAddress = IPAddr.getAddress(spfSession.getIpAddress(),
getIp6cidr());
if (checkAddressList(checkAddress, listAData, getIp6cidr())) {
spfSession.setAttribute(Directive.ATTRIBUTE_MECHANISM_RESULT, Boolean.TRUE);
return null;
}
}
spfSession.setAttribute(Directive.ATTRIBUTE_MECHANISM_RESULT, Boolean.FALSE);
return null;
}