in resolver/src/main/java/org/apache/james/jspf/executor/SynchronousSPFExecutor.java [48:83]
public void execute(SPFSession session, FutureSPFResult result) {
SPFChecker checker;
while ((checker = session.popChecker()) != null) {
// only execute checkers we added (better recursivity)
LOGGER.debug("Executing checker: {}", checker);
try {
DNSLookupContinuation cont = checker.checkSPF(session);
// if the checker returns a continuation we return it
while (cont != null) {
DNSResponse response;
try {
response = new DNSResponse(dnsProbe.getRecords(cont
.getRequest()));
} catch (TimeoutException e) {
response = new DNSResponse(e);
}
cont = cont.getListener().onDNSResponse(response, session);
}
} catch (Exception e) {
while (e != null) {
while (checker == null || !(checker instanceof SPFCheckerExceptionCatcher)) {
checker = session.popChecker();
}
try {
((SPFCheckerExceptionCatcher) checker).onException(e, session);
e = null;
} catch (SPFResultException ex) {
e = ex;
} finally {
checker = null;
}
}
}
}
result.setSPFResult(session);
}