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 2012/07/31 17:59:09 UTC

svn commit: r1367634 - /spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm

Author: mmartinec
Date: Tue Jul 31 15:59:09 2012
New Revision: 1367634

URL: http://svn.apache.org/viewvc?rev=1367634&view=rev
Log:
Bug 6819: Avoiding some DNS lookup failure warnings

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

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm?rev=1367634&r1=1367633&r2=1367634&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm Tue Jul 31 15:59:09 2012
@@ -456,9 +456,21 @@ sub new_dns_packet {
       $type = 'PTR';
     }
   }
+  $type  = 'A'   if !defined $type;   # a Net::DNS::Packet default
+  $class = 'IN'  if !defined $class;  # a Net::DNS::Packet default
 
   my $packet;
   eval {
+    $host =~ s/\.*\z/./s;
+    if (length($host) > 255) {
+      die "domain name longer than 255 bytes\n";
+    } elsif ($host !~ /^ (?: [^.]{1,63} \. )+ \z/sx) {
+      if ($host !~ /^ (?: [^.]+ \. )+ \z/sx) {
+        die "a domain name contains a null label\n";
+      } else {
+        die "a label in a domain name is longer than 63 bytes\n";
+      }
+    }
     $host = dnsext_dns0x20($host)  if $self->{conf}->{dns_options}->{dns0x20};
     $packet = Net::DNS::Packet->new($host, $type, $class);
 
@@ -471,9 +483,8 @@ sub new_dns_packet {
     # case this function should never be called!
     # another possible failure reason: "unexpected null domain label"
     my $eval_stat = $@ ne '' ? $@ : "errno=$!";  chomp $eval_stat;
-    warn sprintf("dns: new_dns_packet (host=%s type=%s class=%s id=%s): ".
-                 "cannot create Net::DNS::Packet: %s",
-                 $host, $type, $class, !$packet?'-':$packet->id, $eval_stat);
+    warn sprintf("dns: new_dns_packet (host=%s type=%s class=%s) failed: %s\n",
+                 $host, $type, $class, $eval_stat);
   };
 
   return $packet;