aleksey created JSPF-111:
----------------------------

             Summary: NPE when setting SPFResult
                 Key: JSPF-111
                 URL: https://issues.apache.org/jira/browse/JSPF-111
             Project: James jSPF
          Issue Type: Bug
          Components: Parser
    Affects Versions: master
         Environment: Java: 21
Spring Boot: 3.2.4
            Reporter: aleksey


Hey, guys! Good to see you again. And I need your help again. When I am using 
*apache-jspf-resolver* version *1.0.4* I am experiencing threads that start 
spawning and hang in the *waiting* state. Here is a sample code that reproduces 
the error:
{code:java}
import org.apache.james.jspf.executor.SPFResult;
import org.apache.james.jspf.impl.DefaultSPF;
import org.apache.james.jspf.impl.SPF;

class SpfVerifierTest {

    public static void main(String[] args) {

        String ipAddress = "103.52.180.162";
        String hostName = "FMTA1-162.ncdelivery04.com";
        String from = 
"17191683732756478-181603-1-mxscout....@delivery.forumofsecrets.com";

        final SPF spfChecker = new DefaultSPF();
        spfChecker.setUseBestGuess(true);

        SPFResult spfResult = spfChecker.checkSPF(ipAddress, from, hostName);
        spfResult.getResult();
    }
} {code}
java.util.concurrent.CompletionException is thrown when calling
{code:java}
dnsProbe.getRecordsAsync(cont.getRequest()){code}
The cause of this exception is org.xbill.DNS.lookup.NoSuchRRSetException.
Here are some details from the Intellj IDEA:
{code:java}
cause = {NoSuchRRSetException@6039} "org.xbill.DNS.lookup.NoSuchRRSetException"
 name = {Name@6045} "eapi.world.netcorecloud.net."
 type = 99
 backtrace = {Object[7]@6046} 
 detailMessage = null
 cause = {NoSuchRRSetException@6039} "org.xbill.DNS.lookup.NoSuchRRSetException"
 stackTrace = {StackTraceElement[19]@6048} 
 depth = 19
 suppressedExceptions = {Collections$EmptyList@6041}  size = 0 {code}
This exception reaches the java.util.concurrent.CompletionStage#exceptionally 
method inside the 
org.apache.james.jspf.executor.AsynchronousSPFExecutor#handleCont method. Where 
we're trying to set the spf result. But SPFSession contains null as the value 
of the currentResultExpanded field so NullPointerException is thrown here:
{code:java}
org.apache.james.jspf.executor.SPFResult

private String generateHeader(String result, SPFSession spfData) { 

...       
if (result.equals(SPFErrorConstants.PASS_CONV)) { ... } // result is null
...
} {code}
This leaves FutureSPFResult in a broken state and causes the calling thread to 
fall asleep forever.
It seems that the cause of this problem appeared with this 
[commit|https://github.com/apache/james-jspf/commit/e188ef5db6a76dc687faa0d464eabc06c4896339]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to