http://issues.apache.org/SpamAssassin/show_bug.cgi?id=5589
Summary: Refined async events handling and DNS lookup completions
Product: Spamassassin
Version: 3.2.3
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P5
Component: Libraries
AssignedTo: [email protected]
ReportedBy: [EMAIL PROTECTED]
Copied from bug 5511, but opening a new ticket for discussions:
To remind ourselves what is the core problem here: some asynchronous
DNS lookup requests carry a completion routine which then spawns
additional DNS queries. This happens currently in Plugin::URIDNSBL,
but could in principle happen in any completion routine. For example,
a lookup on a NS record spawns an additional lookup for an A record,
but not before harvest_dnsbl_queries happens, which is quite late,
so not much time remains for collecting responses to these new queries.
Same goes for URIDNS lookups such as sbl.spamhaus.org, cn-kr.blackholes.us
What happened before the patch (bug 5511) is that most of these
additional lookup results were simply discarded if other rules
took long time to complete (longer than rbl_timeout), which was
a real waste of good information.
A solution is in processing completion routines (which may spawn
new queries) much sooner and gradually, as responses trickle in,
and not wait until priority 500, which is almost at the end of
mail processing.
I have a patch which accomplishes this. It is rather substantial (but
compatible with the rest of the code), touching AsyncLoop.pm mostly,
but also Dns.pm, DnsResolver.pm, Plugin/Check.pm and Plugin/URIDNSBL.pm.
>From Justin:
> This change sounds pretty big, but probably quite uncontroversial
> (assuming it doesn't change any of the public POD-documented APIs),
> so you may not need to open a bug... see what you think applies.
Ok, this is what I'm going to do:
- attach a complete combo patch that applies to 3.2.3 or 3.2.2;
- commit it to trunk;
- add some explanations/comments below.
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.