X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=65aeeefa08c68aec890e81a3dcde9a94224abaf1;hb=a4a03d4c1437e6239c35343a275c2c4436af7751;hp=51f40463ed3a582bd3260e0677109ee2cb2480e5;hpb=3d7b8f73c5a0a75fddfcc701a9c790ea3339a950;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 51f40463..65aeeefa 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -1379,11 +1379,11 @@ sub _add_thingy if ($call) { if ($is_node) { + dbg("ROUTE: added node $call to " . $parent->call) if isdbg('routelow'); @rout = $parent->add($call, $version, Route::here($here)); - dbg("ROUTE: added node $call to " . $parent->call) if isdbg('route'); } else { + dbg("ROUTE: added user $call to " . $parent->call) if isdbg('routelow'); @rout = $parent->add_user($call, Route::here($here)); - dbg("ROUTE: added user $call to " . $parent->call) if isdbg('route'); } } return @rout; @@ -1398,12 +1398,12 @@ sub _del_thingy if ($call) { if ($is_node) { my $nref = Route::Node::get($call); + dbg("ROUTE: deleting node $call from " . $parent->call) if isdbg('routelow'); @rout = $nref->del($parent) if $nref; - dbg("ROUTE: deleted node $call from " . $parent->call) if isdbg('route'); } else { my $uref = Route::User::get($call); + dbg("ROUTE: deleting user $call from " . $parent->call) if isdbg('routelow'); @rout = $parent->del_user($uref) if $uref; - dbg("ROUTE: deleting user $call from " . $parent->call) if isdbg('route'); } } return @rout; @@ -1454,6 +1454,8 @@ sub handle_92 my $line = shift; my $origin = shift; + my (@radd, @rdel); + $self->{do_pc92} ||= 1; my $pcall = $_[1]; @@ -1527,8 +1529,6 @@ sub handle_92 push @nent, $_; } - my (@radd, @rdel); - if ($sort eq 'A') { for (@nent) { push @radd, _add_thingy($parent, $_); @@ -1563,13 +1563,20 @@ sub handle_92 my ($dnodes, $dusers, $nnodes, $nusers) = $parent->calc_config_changes(\@nodes, \@users); + # add users here foreach my $r (@nent) { my $call = $r->[0]; if ($call) { push @radd,_add_thingy($parent, $r) if grep $call eq $_, (@$nnodes, @$nusers); - push @rdel,_del_thingy($parent, $r) if grep $call eq $_, (@$dnodes, @$dusers); } } + # del users here + foreach my $r (@$dnodes) { + push @rdel,_del_thingy($parent, [$r, 1]); + } + foreach my $r (@$dusers) { + push @rdel,_del_thingy($parent, [$r, 0]); + } } else { dbg("PCPROT: unknown action '$sort', ignored") if isdbg('chanerr'); return;