Author: norman Date: Mon Aug 21 10:34:25 2006 New Revision: 433297 URL: http://svn.apache.org/viewvc?rev=433297&view=rev Log: Fix a bug in which the Exception in PTRMechanism was not catched correctly. See JSPF-23
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1TestMockDNSService.java james/jspf/trunk/src/test/resources/org/apache/james/jspf/test.txt Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java?rev=433297&r1=433296&r2=433297&view=diff ============================================================================== --- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java (original) +++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java Mon Aug 21 10:34:25 2006 @@ -43,47 +43,51 @@ + SPF1Parser.DOMAIN_SPEC_REGEX + ")?"; /** - * @see org.apache.james.jspf.core.GenericMechanism#run(org.apache.james.jspf.core.SPF1Data) + * @see org.apache.james.jspf.core.Mechanism#run(org.apache.james.jspf.core.SPF1Data) */ public boolean run(SPF1Data spfData) throws PermErrorException, - TempErrorException, NoneException { + TempErrorException { String compareDomain; IPAddr compareIP; ArrayList validatedHosts = new ArrayList(); - // update currentDepth - spfData.setCurrentDepth(spfData.getCurrentDepth() + 1); + try { + // update currentDepth + spfData.setCurrentDepth(spfData.getCurrentDepth() + 1); - // Get the right host. - String host = expandHost(spfData); + // Get the right host. + String host = expandHost(spfData); - // Get PTR Records for the ipAddress which is provided by SPF1Data - List domainList = spfData.getDnsProbe().getPTRRecords( - spfData.getIpAddress()); - for (int i = 0; i < domainList.size(); i++) { - - // Get a record for this - List aList = spfData.getDnsProbe().getARecords( - (String) domainList.get(i), 32); - for (int j = 0; j < aList.size(); j++) { - compareIP = (IPAddr) aList.get(j); - if (compareIP.toString().equals(spfData.getIpAddress())) { - validatedHosts.add(domainList.get(i)); + // Get PTR Records for the ipAddress which is provided by SPF1Data + List domainList = spfData.getDnsProbe().getPTRRecords( + spfData.getIpAddress()); + for (int i = 0; i < domainList.size(); i++) { + + // Get a record for this + List aList = spfData.getDnsProbe().getARecords( + (String) domainList.get(i), 32); + for (int j = 0; j < aList.size(); j++) { + compareIP = (IPAddr) aList.get(j); + if (compareIP.toString().equals(spfData.getIpAddress())) { + validatedHosts.add(domainList.get(i)); + } } } - } - // Check if we match one of this ptr! - for (int j = 0; j < validatedHosts.size(); j++) { - compareDomain = (String) validatedHosts.get(j); - if (compareDomain.equals(host) - || compareDomain.endsWith("." + host)) { - return true; + // Check if we match one of this ptr! + for (int j = 0; j < validatedHosts.size(); j++) { + compareDomain = (String) validatedHosts.get(j); + if (compareDomain.equals(host) + || compareDomain.endsWith("." + host)) { + return true; + } } + } catch (NoneException e) { + // No PTR record found + return false; } - return false; } Modified: james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1TestMockDNSService.java URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1TestMockDNSService.java?rev=433297&r1=433296&r2=433297&view=diff ============================================================================== --- james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1TestMockDNSService.java (original) +++ james/jspf/trunk/src/test/java/org/apache/james/jspf/SPF1TestMockDNSService.java Mon Aug 21 10:34:25 2006 @@ -81,6 +81,8 @@ return "v=spf1 +a:myipv6a.record -all"; if ("spf22-test.foo.bar".equals(hostname)) throw new TempErrorException("DNS Server returns temperror"); + if ("spf23-test.foo.bar".equals(hostname)) + return "v=spf1 ptr -all"; } throw new IllegalStateException("Mock data not available"); } @@ -117,6 +119,8 @@ public List getPTRRecords(String ipAddress) throws PermErrorException, NoneException, TempErrorException { + if (ipAddress.equals("10.0.0.1")) + throw new NoneException("No PTR rrecord"); throw new IllegalStateException("Mock data not available"); } Modified: james/jspf/trunk/src/test/resources/org/apache/james/jspf/test.txt URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/test/resources/org/apache/james/jspf/test.txt?rev=433297&r1=433296&r2=433297&view=diff ============================================================================== --- james/jspf/trunk/src/test/resources/org/apache/james/jspf/test.txt (original) +++ james/jspf/trunk/src/test/resources/org/apache/james/jspf/test.txt Mon Aug 21 10:34:25 2006 @@ -155,3 +155,11 @@ smtp-comment /.*/ header-comment /.*/ spfquery: received-spf /.*/ Received-SPF: + +spfquery -ip=10.0.0.1 -sender=spf23-test.foo.bar -helo=spf23-test.foo.bar +result /.*/ fail +smtp-comment /.*/ +header-comment /.*/ spfquery: +received-spf /.*/ Received-SPF: +explanation /.*/ http://www.openspf.org/why.html?sender=spf23-test.foo.bar&ip=10.0.0.1 + --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]