You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2022/04/02 07:28:58 UTC

svn commit: r1899506 - /spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm

Author: hege
Date: Sat Apr  2 07:28:58 2022
New Revision: 1899506

URL: http://svn.apache.org/viewvc?rev=1899506&view=rev
Log:
Optimize domain_to_search_list

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

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm?rev=1899506&r1=1899505&r2=1899506&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm Sat Apr  2 07:28:58 2022
@@ -2319,16 +2319,14 @@ sub domain_to_search_list {
   my ($domain) = @_;
   $domain =~ s/^\.+//; $domain =~ s/\.+\z//;  # strip leading and trailing dots
   my @search_keys;
-  if ($domain =~ /\[/) {  # don't split address literals
+  if (index($domain, '[') == 0) {  # don't split address literals
     @search_keys = ( $domain );  # presumably an address literal
-  } else {
-    local $1;
+  } elsif ($domain ne '') {
     $domain = lc $domain;
-    for (;;) {
-      last  if $domain eq '';
-      push(@search_keys, $domain);
-      # strip one level
-      $domain = ($domain =~ /^ (?: [^.]* ) \. (.*) \z/xs) ? $1 : '';
+    push @search_keys, $domain;
+    my $pos = 0;
+    while (($pos = index($domain, '.', $pos+1)) != -1) {
+      push @search_keys, substr($domain, $pos+1);
     }
     if (@search_keys > 20) {  # enforce some sanity limit
       @search_keys = @search_keys[$#search_keys-19 .. $#search_keys];