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]
