Hi Stefano,

I'm happy you took the time to work on this. I did some testing and
there seems to be a "race condition" when using the
StagedMultipleSPFExecutor. After some tests run it stop and wait for
ever. So there is a deadlock. I tried to inverstigate in this yesterday
but not found the problem yet.

But the rest looks really cool.

bye
Norman

Stefano Bagnara schrieb:
> Finally I found the time for an update on what I did in the past
> full-immersion weekend on the jSPF branch.
>
> I refactored most of the code and did most of the refactoring needed
> for asynchronous support but I still have to integrate dnsjnio and to
> take care of synchronizations/thread-safety issues.
>
> SPF1Data now is SPFSession and contains the status of the current spf
> lookup session.
>
> A session has 2 stacks:
> 1) A stack of SPFChecker
> 2) A stack of SPFCheckerExceptionCatcher
>
> The processing (SPFExecutor.execute) of an SPFSession is done this way:
> a- take the last SPFChecker from the stack.
> b- if found then execute it
>   c- if it returns a DNSLookupContinuation
>     c1- take care of the DNSLookup
>     c2- submit the result to the DNSLookupContinuation.getListener()
> (SPFCheckerDNSResponseListener).
>     c3- if if returns a DNSLookupContinuation go to (c)
>   d- go to (a).
>
> If during the execution of a checker (or a continuation) an exception
> is thrown then the current exceptionCatcher is taken from the stack
> and called to manage the exception. The catcher usually remove any
> checker added to the stack after that specific recursion (catchers are
> used for recursive calls like include/redirect) and decide how to
> handle the exception.
>
> A special mention goes to macro expansion: there is only one macro
> that needs a dns lookup and it is used to retrieve the client hostname.
> I managed with this pattern:
> 1) try to expand
> 2) if the result is null then it means that the client hostname was
> needed in the expansion.
>    2b) return the DNSLookupContinuation for the client hostname
>    2c) try again to expand (this time it must work)
>
> The whole thing is much more complicate than previously mainly because
> of manual management of the stack and associated try/catch blocks to
> "simulate" continuation support, but I tried to isolate as much as
> possible the "complexity" by reusing the same pattern everywhere.
>
> The only alternative I found to this complexity is the use of bytecode
> manipulation is a similar way to continuation support in Jetty, but
> such a solution was out of my available timeframe.
>
> Next step: implement a dnsjnio based resolver and make it work for
> real ;-)
>
> Stefano
>
> Stefano Bagnara ha scritto:
>> Hi all,
>>
>> I'm studying how to integrate dnsjnio [1] into jSPF to enable
>> asynchronous lookup for spf records.
>>
>> I plan to start a branch in jSPF for this as soon as I'll have the
>> time to play with it a bit more.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
> !DSPAM:1,462e0122324321630414402!
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to