https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7987
--- Comment #3 from Michael Storz <[email protected]> --- Well, it took me more than a day of carefully reviewing the call diagram and implementation of bgsend_and_start_lookup to come to this conclusion. My first thought was that maybe some tests are not working properly and therefore overlooked that some calls to rule_pending are missing. Only afterwards did I realize that it was the other way around. We both know how complicated all the rule processing is. Therefore, from my point of view, it is extremely important to remove everything superfluous so that we have a chance to understand how the different algorithms work. This has nothing to do with cosmetic details, but is essential. Next, I'm going to look at asynchronous tag processing. After your second change to FromNameSpoof.pm, I'm pretty sure there's a general processing error here. But I'll have to check that out in more detail. The use of the rule_pending and rule_ready routines you introduced should be clearly described and also implemented accordingly. From the current description I understand that the routines are to be used in principle with all asynchronous eval functions, so that the evaluation of the meta routines works. I am of the opinion that this description is wrong and does not correspond to your implementation. If the processing of the asynchronous calls, i.e. the queueing, polling and dequeueing is done centrally, then the handling must be done automatically. The end handling should then also be done centrally. This applies to both the central mechanism via bgsend_and_start_lookup and via action_depends_on_tags. For bgsend_and_start_lookup, I'm pretty sure that's how you implemented it. And that's a big step forward. rule_pending/rule_ready should only become necessary if the processing is decentralized and the periodic queries are each triggered via check_tick. This is the case with DCC.pm, Pyzor.pm and Razor2.pm. Here it also makes sense to have the end handling done by the respective plugin and triggered by check_cleanup. And also here, I think, you have implemented it exactly like that. -- You are receiving this mail because: You are the assignee for the bug.
