From b62d7e0cc71cc1ff23d66dd8baf0f5f3c5c7a29b Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Sat, 7 Nov 2020 19:47:20 +0100 Subject: [PATCH] location-functions.pl: Use a single script-wide db_handle. Create and use a single script-wide database handle for libloc to prevent from creating multiple ones. This helps saving memory, especially on small systems. Reference #12515. Signed-off-by: Stefan Schantl Signed-off-by: Michael Tremer --- config/cfgroot/location-functions.pl | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/config/cfgroot/location-functions.pl b/config/cfgroot/location-functions.pl index 2cfe7f908f..9b1d0bfb50 100644 --- a/config/cfgroot/location-functions.pl +++ b/config/cfgroot/location-functions.pl @@ -55,6 +55,9 @@ our $keyfile = "$location_dir/signing-key.pem"; # Directory which contains the exported databases. our $xt_geoip_db_directory = "/usr/share/xt_geoip/"; +# Create libloc database handle. +my $db_handle = &init(); + # ## Tiny function to init the location database. # @@ -86,7 +89,7 @@ sub verify ($) { ## Function to the the country code of a given address. # sub lookup_country_code($$) { - my ($db_handle, $address) = @_; + my ($address) = @_; # Lookup the given address. my $country_code = &Location::lookup_country_code($db_handle, $address); @@ -174,9 +177,6 @@ sub get_full_country_name($) { # Function to get all available locations. sub get_locations() { - # Create libloc database handle. - my $db_handle = &init(); - # Get locations which are stored in the location database. my @database_locations = &Location::database_countries($db_handle); @@ -197,9 +197,6 @@ sub address_has_flags($) { # Array to store the flags of the address. my @flags; - # Init libloc database handle. - my $db_handle = &init(); - # Loop through the hash of possible network flags. foreach my $flag (keys(%network_flags)) { # Check if the address has the current flag. -- 2.39.2