$OpenBSD: patch-lib_Mail_SpamAssassin_Plugin_URILocalBL_pm,v 1.3 2019/03/07 07:41:08 giovanni Exp $

Patch to fix URILocalBL plugin with GeoIP2 Perl module

Index: lib/Mail/SpamAssassin/Plugin/URILocalBL.pm
--- lib/Mail/SpamAssassin/Plugin/URILocalBL.pm.orig
+++ lib/Mail/SpamAssassin/Plugin/URILocalBL.pm
@@ -459,16 +459,20 @@ sub check_uri_local_bl {
 
     # this code burps an ugly message if it fails, but that's redirected elsewhere
     my $flags = 0;
-    eval '$flags = Geo::IP::GEOIP_SILENCE' if ($gip_wanted >= $gip_have);
+    my $flag_isp = 0;
+    my $flag_silent = 0;
+    eval '$flags = GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE' if ($gip_wanted >= $gip_have);
+    eval '$flag_silent = Geo::IP::GEOIP_SILENCE' if ($gip_wanted >= $gip_have);
+    eval '$flag_isp = GEOIP_ISP_EDITION' if ($gip_wanted >= $gip_have);
 
-    if ($flags && $gic_wanted >= $gic_have) {
-      $self->{geoip} = Geo::IP->new(GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE | $flags);
-      $self->{geoisp} = Geo::IP->open_type(GEOIP_ISP_EDITION, GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE | $flags);
+    if ($flag_silent && $gic_wanted >= $gic_have) {
+      $self->{geoip} = Geo::IP->new($flags | $flag_silent);
+      $self->{geoisp} = Geo::IP->open_type($flag_isp | $flag_silent | $flags);
     } else {
       open(OLDERR, ">&STDERR");
       open(STDERR, ">", "/dev/null");
-      $self->{geoip} = Geo::IP->new(GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE);
-      $self->{geoisp} = Geo::IP->open_type(GEOIP_ISP_EDITION, GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE);
+      $self->{geoip} = Geo::IP->new($flags);
+      $self->{geoisp} = Geo::IP->open_type($flag_isp);
       open(STDERR, ">&OLDERR");
       close(OLDERR);
     }
