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];