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 2019/06/09 08:09:45 UTC

svn commit: r1860874 - in /spamassassin: branches/3.4/sa-update.raw trunk/sa-update.raw

Author: hege
Date: Sun Jun  9 08:09:44 2019
New Revision: 1860874

URL: http://svn.apache.org/viewvc?rev=1860874&view=rev
Log:
Bug 7703 - sa-update aborts unnecessarily on IPv6-only hosts with valid proxy

Modified:
    spamassassin/branches/3.4/sa-update.raw
    spamassassin/trunk/sa-update.raw

Modified: spamassassin/branches/3.4/sa-update.raw
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/sa-update.raw?rev=1860874&r1=1860873&r2=1860874&view=diff
==============================================================================
--- spamassassin/branches/3.4/sa-update.raw (original)
+++ spamassassin/branches/3.4/sa-update.raw Sun Jun  9 08:09:44 2019
@@ -1676,9 +1676,16 @@ sub choose_mirror {
 
 sub check_mirror_af {
     my ($mirror) = @_;
-    my($a_rr, $aaaa_rr);
-      # RFC 3986:  scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
-    $mirror =~ s{^[a-z][a-z0-9.+-]*://}{}si;  # strip scheme like http://
+    # RFC 3986:  scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+    $mirror =~ s{^([a-z][a-z0-9.+-]*)://}{}si;  # strip scheme like http://
+    my $scheme = lc($1);
+    # No DNS check needed for proxied connections (caveat: no_proxy is not checked)
+    my $http_proxy = (defined $ENV{"http_proxy"} && $ENV{"http_proxy"} =~ /\S/) ||
+                     (defined $ENV{"HTTP_PROXY"} && $ENV{"HTTP_PROXY"} =~ /\S/);
+    my $https_proxy = (defined $ENV{"https_proxy"} && $ENV{"https_proxy"} =~ /\S/) ||
+                      (defined $ENV{"HTTPS_PROXY"} && $ENV{"HTTPS_PROXY"} =~ /\S/);
+    return 1 if $scheme eq "http" && $http_proxy;
+    return 1 if $scheme eq "https" && $https_proxy;
     # No DNS check needed for IPv4 or IPv6 address literal
     return 1 if $mirror =~ m{^\d+\.\d+\.\d+\.\d+(?:[:/]|$)};
     return 1 if $mirror =~ m{^\[};

Modified: spamassassin/trunk/sa-update.raw
URL: http://svn.apache.org/viewvc/spamassassin/trunk/sa-update.raw?rev=1860874&r1=1860873&r2=1860874&view=diff
==============================================================================
--- spamassassin/trunk/sa-update.raw (original)
+++ spamassassin/trunk/sa-update.raw Sun Jun  9 08:09:44 2019
@@ -1676,9 +1676,16 @@ sub choose_mirror {
 
 sub check_mirror_af {
     my ($mirror) = @_;
-    my($a_rr, $aaaa_rr);
-      # RFC 3986:  scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
-    $mirror =~ s{^[a-z][a-z0-9.+-]*://}{}si;  # strip scheme like http://
+    # RFC 3986:  scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+    $mirror =~ s{^([a-z][a-z0-9.+-]*)://}{}si;  # strip scheme like http://
+    my $scheme = lc($1);
+    # No DNS check needed for proxied connections (caveat: no_proxy is not checked)
+    my $http_proxy = (defined $ENV{"http_proxy"} && $ENV{"http_proxy"} =~ /\S/) ||
+                     (defined $ENV{"HTTP_PROXY"} && $ENV{"HTTP_PROXY"} =~ /\S/);
+    my $https_proxy = (defined $ENV{"https_proxy"} && $ENV{"https_proxy"} =~ /\S/) ||
+                      (defined $ENV{"HTTPS_PROXY"} && $ENV{"HTTPS_PROXY"} =~ /\S/);
+    return 1 if $scheme eq "http" && $http_proxy;
+    return 1 if $scheme eq "https" && $https_proxy;
     # No DNS check needed for IPv4 or IPv6 address literal
     return 1 if $mirror =~ m{^\d+\.\d+\.\d+\.\d+(?:[:/]|$)};
     return 1 if $mirror =~ m{^\[};