You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by si...@apache.org on 2005/05/21 16:58:00 UTC

svn commit: r171217 - /spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm

Author: sidney
Date: Sat May 21 07:58:00 2005
New Revision: 171217

URL: http://svn.apache.org/viewcvs?rev=171217&view=rev
Log:
bug 4354 partial fix to dnsbl bugs. waiting loop should run once before polling for replies

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm?rev=171217&r1=171216&r2=171217&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm Sat May 21 07:58:00 2005
@@ -295,44 +295,31 @@
 
   @waiting = grep { defined $_->[ID] } @waiting;
   $total = scalar @waiting;
-
   my $now = time;
-
   # trap this loop in an eval { } block, as Net::DNS could throw
   # die()s our way; in particular, process_dnsbl_results() has
   # thrown die()s before (bug 3794).
   eval {
-    while (@waiting) {
-      my $nfound = $self->{resolver}->poll_responses(1);
-
-      if ($nfound > 0) {
-        @left = ();
-        for my $query (@waiting) {
-          if (exists $self->{dnsfinished}->{$query->[ID]})
-          {
-            my $pkt = delete $self->{dnsfinished}->{$query->[ID]};
-            $self->process_dnsbl_result($query, $pkt);
-          }
-          else {
-            push(@left, $query);
-          }
+    while (@waiting && ($now < $deadline)) {
+      @left = ();
+      for my $query (@waiting) {
+        if (exists $self->{dnsfinished}->{$query->[ID]}) {
+          my $pkt = delete $self->{dnsfinished}->{$query->[ID]};
+          $self->process_dnsbl_result($query, $pkt);
+        } else {
+          push(@left, $query);
         }
-      } else {
-        @left = @waiting;
       }
-
       $self->{main}->call_plugins ("check_tick", { permsgstatus => $self });
-
       last unless @left;
-      $now = time;
-      last if $now >= $deadline;
-
       @waiting = @left;
       # dynamic timeout
       my $dynamic = (int($self->{conf}->{rbl_timeout}
                         * (1 - (($total - @left) / $total) ** 2) + 0.5)
                     + $self->{rbl_launch});
       $deadline = $dynamic if ($dynamic < $deadline);
+      until((($now = time) >= $deadline) || ($self->{resolver}->poll_responses(1) > 0)) {
+      }
     }
     dbg("dns: success for " . ($total - @left) . " of $total queries");
   };



Re: svn commit: r171217 - /spamassassin/trunk/lib/Mail/SpamAssassin/Dns.pm

Posted by Daniel Quinlan <qu...@pathname.com>.
sidney@apache.org writes:

> +      until((($now = time) >= $deadline) || ($self->{resolver}->poll_responses(1) > 0)) {
> +      }

Ew.

-- 
Daniel Quinlan
http://www.pathname.com/~quinlan/