really remove all client data
[pxelator] / lib / PXElator / client.pm
index e826380..b7740b6 100644 (file)
@@ -6,6 +6,7 @@ use autodie;
 
 use File::Slurp;
 use Data::Dump qw/dump/;
+use File::Path;
 
 use server;
 use format;
@@ -83,6 +84,13 @@ sub next_ip($) {
        my $mac = shift;
        $mac = format::mac($mac);
 
+       if ( my $clients_left = server::shared( 'new_clients' ) ) {
+               server::shared( 'new_clients', $clients_left - 1 );
+       } else {
+               warn "W: no new clients accepted";
+               return '0.0.0.0';
+       }
+
        my $prefix = $server::ip;
        $prefix =~ s{\.\d+$}{.};
        my $addr = $server::ip_from || die;
@@ -167,7 +175,7 @@ sub remove {
        if ( my $mac = mac_from_ip $ip ) {
                unlink "$server::conf/mac/$mac";
        }
-       rmdir "$server::conf/ip/$ip";
+       rmtree "$server::conf/ip/$ip";
 }
 
 sub arp_mac_dev {