You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2010/06/20 21:44:48 UTC

svn commit: r956394 - /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm

Author: mmartinec
Date: Sun Jun 20 19:44:48 2010
New Revision: 956394

URL: http://svn.apache.org/viewvc?rev=956394&view=rev
Log:
some small optimizations to URIDNSBL.pm: factor out dereferencing
$scanner->{conf} from loops;  some refs to {conf} were through
$scanner->{main}->{conf} while others through $scanner->{conf},
standardize to the later for consistency;  remove vestiges of
log_dns_result() and call dbg directly in remaining few places
(same overhead: one routine call);  don't count number of keys
of a hash when all we need is to know if it is empty or not

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm?rev=956394&r1=956393&r2=956394&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm Sun Jun 20 19:44:48 2010
@@ -283,8 +283,9 @@ sub check_uridnsbl {
 sub parsed_metadata {
   my ($self, $opts) = @_;
   my $scanner = $opts->{permsgstatus};
+  my $conf = $scanner->{conf};
 
-  return 0  if $scanner->{main}->{conf}->{skip_uribl_checks};
+  return 0  if $conf->{skip_uribl_checks};
 
   if (!$scanner->is_dns_available()) {
     $self->{dns_not_available} = 1;
@@ -307,18 +308,19 @@ sub parsed_metadata {
   $scanner->{'uridnsbl_active_rules_fullnsrhsbl'} = { };
   $scanner->{'uridnsbl_active_rules_revipbl'} = { };
 
-  foreach my $rulename (keys %{$scanner->{conf}->{uridnsbls}}) {
-    next unless ($scanner->{conf}->is_rule_active('body_evals',$rulename));
+  foreach my $rulename (keys %{$conf->{uridnsbls}}) {
+    next unless ($conf->is_rule_active('body_evals',$rulename));
 
-    my $rulecf = $scanner->{conf}->{uridnsbls}->{$rulename};
-    my $tflags = $scanner->{conf}->{tflags}->{$rulename};
+    my $rulecf = $conf->{uridnsbls}->{$rulename};
+    my $tflags = $conf->{tflags}->{$rulename};
     $tflags = ''  if !defined $tflags;
 
-    if ($rulecf->{is_rhsbl} && $tflags =~ /\b ips_only \b/x) {
+    my $is_rhsbl = $rulecf->{is_rhsbl};
+    if ($is_rhsbl && $tflags =~ /\b ips_only \b/x) {
       $scanner->{uridnsbl_active_rules_rhsbl_ipsonly}->{$rulename} = 1;
-    } elsif ($rulecf->{is_rhsbl} && $tflags =~ /\b domains_only \b/x) {
+    } elsif ($is_rhsbl && $tflags =~ /\b domains_only \b/x) {
       $scanner->{uridnsbl_active_rules_rhsbl_domsonly}->{$rulename} = 1;
-    } elsif ($rulecf->{is_rhsbl}) {
+    } elsif ($is_rhsbl) {
       $scanner->{uridnsbl_active_rules_rhsbl}->{$rulename} = 1;
     } elsif ($rulecf->{is_fullnsrhsbl}) {
       $scanner->{uridnsbl_active_rules_fullnsrhsbl}->{$rulename} = 1;
@@ -332,7 +334,7 @@ sub parsed_metadata {
   # get all domains in message
 
   # don't keep dereferencing this
-  my $skip_domains = $scanner->{main}->{conf}->{uridnsbl_skip_domains};
+  my $skip_domains = $conf->{uridnsbl_skip_domains};
 
   # list of hashes to use in order
   my @uri_ordered;
@@ -390,7 +392,7 @@ sub parsed_metadata {
   # at this point, @uri_ordered is an ordered array of uri hashes
 
   my %domlist;
-  my $umd = $scanner->{main}->{conf}->{uridnsbl_max_domains};
+  my $umd = $conf->{uridnsbl_max_domains};
   while (keys %domlist < $umd && @uri_ordered) {
     my $array = shift @uri_ordered;
     next unless $array;
@@ -728,6 +730,7 @@ sub set_config {
 
 sub query_domain {
   my ($self, $scanner, $dom) = @_;
+  my $conf = $scanner->{conf};
 
   #warn "uridnsbl: domain $dom\n";
   #return;
@@ -735,12 +738,11 @@ sub query_domain {
   $dom = lc $dom;
   return if $scanner->{uridnsbl_seen_domain}->{$dom};
   $scanner->{uridnsbl_seen_domain}->{$dom} = 1;
-  $self->log_dns_result("querying domain $dom");
+  dbg("uridnsbl: querying domain $dom");
 
   my $obj = { dom => $dom };
 
-  my $tflags = $scanner->{conf}->{tflags};
-  my $cf = $scanner->{uridnsbl_active_rules_revipbl};
+  my $tflags = $conf->{tflags};
 
   my ($is_ip, $single_dnsbl);
   if ($dom =~ /^\d+\.\d+\.\d+\.\d+$/) {
@@ -781,7 +783,7 @@ sub query_domain {
     }
 
     foreach my $rulename (@rhsbldoms) {
-      my $rulecf = $scanner->{conf}->{uridnsbls}->{$rulename};
+      my $rulecf = $conf->{uridnsbls}->{$rulename};
       $self->lookup_single_dnsbl($scanner, $obj, $rulename,
 				 $dom, $rulecf->{zone}, $rulecf->{type});
 
@@ -792,9 +794,7 @@ sub query_domain {
     # perform NS, A lookups to look up the domain in the non-RHSBL subset,
     # but only if there are active reverse-IP-URIBL rules
     if ($dom !~ /^\d+\.\d+\.\d+\.\d+$/ && 
-                (scalar keys %{$reviprules} ||
-                  scalar keys %{$nsrhsblrules} ||
-                  scalar keys %{$fullnsrhsblrules}))
+         (%$reviprules || %$nsrhsblrules || %$fullnsrhsblrules) )
     {
       $self->lookup_domain_ns($scanner, $obj, $dom);
     }
@@ -825,6 +825,7 @@ sub lookup_domain_ns {
 
 sub complete_ns_lookup {
   my ($self, $scanner, $ent, $dom) = @_;
+  my $conf = $scanner->{conf};
 
   my $packet = $ent->{response_packet};
   my @answer = !defined $packet ? () : $packet->answer;
@@ -837,7 +838,7 @@ sub complete_ns_lookup {
   foreach my $rr (@answer) {
     my $str = $rr->string;
     next unless (defined($str) && defined($dom));
-    $self->log_dns_result ("NSs for $dom: $str");
+    dbg("uridnsbl: NSs for $dom: $str");
 
     if ($str =~ /IN\s+NS\s+(\S+)/) {
       my $nsmatch = lc $1;
@@ -859,7 +860,7 @@ sub complete_ns_lookup {
       }
 
       foreach my $rulename (keys %{$nsrhsblrules}) {
-        my $rulecf = $scanner->{conf}->{uridnsbls}->{$rulename};
+        my $rulecf = $conf->{uridnsbls}->{$rulename};
         $self->lookup_single_dnsbl($scanner, $ent->{obj}, $rulename,
                                   $nsrhblstr, $rulecf->{zone}, $rulecf->{type});
 
@@ -867,7 +868,7 @@ sub complete_ns_lookup {
       }
 
       foreach my $rulename (keys %{$fullnsrhsblrules}) {
-        my $rulecf = $scanner->{conf}->{uridnsbls}->{$rulename};
+        my $rulecf = $conf->{uridnsbls}->{$rulename};
         $self->lookup_single_dnsbl($scanner, $ent->{obj}, $rulename,
                                   $fullnsrhblstr, $rulecf->{zone}, $rulecf->{type});
 
@@ -899,7 +900,7 @@ sub complete_a_lookup {
   my @answer = !defined $packet ? () : $packet->answer;
   foreach my $rr (@answer) {
     my $str = $rr->string;
-    $self->log_dns_result ("A for NS $hname: $str");
+    dbg("uridnsbl: A for $hname: $str");
 
     if ($str =~ /IN\s+A\s+(\S+)/) {
       $self->lookup_dnsbl_for_ip($scanner, $ent->{obj}, $1);
@@ -916,10 +917,11 @@ sub lookup_dnsbl_for_ip {
   $ip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
   my $revip = "$4.$3.$2.$1";
 
-  my $tflags = $scanner->{conf}->{tflags};
+  my $conf = $scanner->{conf};
+  my $tflags = $conf->{tflags};
   my $cf = $scanner->{uridnsbl_active_rules_revipbl};
   foreach my $rulename (keys %{$cf}) {
-    my $rulecf = $scanner->{conf}->{uridnsbls}->{$rulename};
+    my $rulecf = $conf->{uridnsbls}->{$rulename};
 
     # ips_only/domains_only lookups should not act on this kind of BL
     next if ($tflags->{$rulename} =~ /\b(?:ips_only|domains_only)\b/);
@@ -1083,11 +1085,6 @@ sub res_bgsend {
       });
 }
 
-sub log_dns_result {
-  #my $self = shift;
-  #Mail::SpamAssassin::dbg("uridnsbl: ".join (' ', @_));
-}
-
 # ---------------------------------------------------------------------------
 
 # capability checks for "if can()":