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 2015/12/19 01:46:26 UTC
svn commit: r1720872 -
/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Util.pm
Author: mmartinec
Date: Sat Dec 19 00:46:26 2015
New Revision: 1720872
URL: http://svn.apache.org/viewvc?rev=1720872&view=rev
Log:
Bug 7278: redirector_pattern - reverse order so hardcoded check done last
Modified:
spamassassin/branches/3.4/lib/Mail/SpamAssassin/Util.pm
Modified: spamassassin/branches/3.4/lib/Mail/SpamAssassin/Util.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Util.pm?rev=1720872&r1=1720871&r2=1720872&view=diff
==============================================================================
--- spamassassin/branches/3.4/lib/Mail/SpamAssassin/Util.pm (original)
+++ spamassassin/branches/3.4/lib/Mail/SpamAssassin/Util.pm Sat Dec 19 00:46:26 2015
@@ -1342,23 +1342,27 @@ sub uri_list_canonicalize {
# deal with http redirectors. strip off one level of redirector
# and add back to the array. the foreach loop will go over those
# and deal appropriately.
- # bug 3308: redirectors like yahoo only need one '/' ... <grrr>
- if ($rest =~ m{(https?:/{0,2}.+)$}i) {
- push(@uris, $1);
- }
- # resort to redirector pattern matching if the generic https? check
- # doesn't result in a match -- bug 4176
- else {
- foreach (@{$redirector_patterns}) {
- if ("$proto$host$rest" =~ $_) {
- next unless defined $1;
- dbg("uri: parsed uri pattern: $_");
- dbg("uri: parsed uri found: $1 in redirector: $proto$host$rest");
- push (@uris, $1);
- last;
- }
- }
+ # try redirector pattern matching first
+ # (but see also bug 4176)
+ my $found_redirector_match;
+ foreach my $re (@{$redirector_patterns}) {
+ if ("$proto$host$rest" =~ $re) {
+ next unless defined $1;
+ dbg("uri: parsed uri pattern: $re");
+ dbg("uri: parsed uri found: $1 in redirector: $proto$host$rest");
+ push (@uris, $1);
+ $found_redirector_match = 1;
+ last;
+ }
+ }
+ if (!$found_redirector_match) {
+ # try generic https? check if redirector pattern matching failed
+ # bug 3308: redirectors like yahoo only need one '/' ... <grrr>
+ if ($rest =~ m{(https?:/{0,2}.+)$}i) {
+ push(@uris, $1);
+ dbg("uri: parsed uri found: $1 in hard-coded redirector");
+ }
}
########################