%valid = (
dxchan => '0,DXChannel List,parray',
- nodes => '0,Nodes,parray',
- users => '0,Users,parray',
+ nodes => '0,Node List,parray',
+ users => '0,User List,parray',
usercount => '0,User Count',
version => '0,Version',
newroute => '0,New Routing?,yesno',
+ pingtime => '0,Ping Time',
);
$filterdef = $Route::filterdef;
foreach my $r (@in) {
next unless $r;
next if $visited{$r->call};
- my ($o) = $r->del_dxchan($self);
+ my ($o) = $r->del_dxchan($dxchan);
if ($o) {
- dbg("Orphanning $_->{call}") if isdbg('routelow');
+ dbg("Orphanning $o->{call}") if isdbg('routelow');
push @rout, $o;
}
push @in, map{ Route::Node::get($_) } $r->nodes;
sub del_dxchan
{
my ($self, $dxchan) = @_;
- return $self->_dellist('dxchan', $dxchan);
+ $self->_dellist('dxchan', $dxchan);
+ return $self->is_empty('dxchan') ? ($self) : ();
}
sub usercount
{
my $self = shift;
my @rout;
- foreach my $u (${$self->{users}}) {
+ foreach my $u (@{$self->{users}}) {
my $uref = Route::User::get($u);
push @rout, $self->del_user($uref) if $uref;
}
confess "already have $call in $pkg" if $list{$call};
my $self = $pkg->SUPER::new($call);
- $self->{dxchan} = ref $pkg ? [ $pkg->{call} ] : [ ];
+ $self->{dxchan} = [ ];
$self->{version} = shift || 5000;
$self->{flags} = shift || Route::here(1);
$self->{users} = [];
sub delete
{
my $self = shift;
- dbg("deleting Route::Node $self->{call}") if isdbg('routelow');
+ dbg("Deleting Route::Node $self->{call}") if isdbg('routelow');
+ for ($self->unlink_all_users) {
+ $_->delete;
+ }
delete $list{$self->{call}};
}