aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2014-10-20 08:17:52 +0300
committerSergey Poznyakoff <gray@gnu.org>2014-10-20 08:17:52 +0300
commitd8f25ca5f84413187ba4a41c09d552beeb2c0658 (patch)
tree20ebadad1161af784104d7b42a7b1723af80ee82
parent8e38121f066cfde244782b05416f10e41803dd4c (diff)
downloaddnstools-d8f25ca5f84413187ba4a41c09d552beeb2c0658.tar.gz
dnstools-d8f25ca5f84413187ba4a41c09d552beeb2c0658.tar.bz2
whoseip: ensure database consistency during export
* whoseip/Whoseip/DB.pm (ipdb_export): Operate on locked database.
-rw-r--r--whoseip/Whoseip/DB.pm3
1 files changed, 2 insertions, 1 deletions
diff --git a/whoseip/Whoseip/DB.pm b/whoseip/Whoseip/DB.pm
index 21a4192..a455a01 100644
--- a/whoseip/Whoseip/DB.pm
+++ b/whoseip/Whoseip/DB.pm
@@ -932,21 +932,22 @@ to recreate the database via B<Whoseip::DB::ipdb_import>.
sub ipdb_export {
my ($dbf, $fd) = @_;
$fd = *STDOUT unless defined($fd);
+ ipdb_locker($dbf, lock => LOCK_EX);
my $ug = new Data::UUID;
-
print $fd "# Whoseip dump from file $dbf->{filename}\n";
print $fd "# UUID ".$ug->to_string($dbf->{uuid})."\n";
local $Data::Dumper::Indent = 0;
local $Data::Dumper::Terse = 1;
foreach my $off (values %{$dbf->{rootidx}}) {
ipdb_dump_page($dbf, $off, $fd);
}
+ ipdb_locker($dbf, lock => LOCK_UN);
}
=pod
=head1 B<$res = Whoseip::DB::ipdb_import(I<$dbf>>[B<, I<$fd>>]B<);>

Return to:

Send suggestions and report system problems to the System administrator.