projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
an AFAIK nominally working (for one connection) version
[spider.git]
/
perl
/
Route
/
Node.pm
diff --git
a/perl/Route/Node.pm
b/perl/Route/Node.pm
index 6f8de6dee1ca0431d37ef25c757877fc67e3a797..83f5768c0e6fe8fa5df2fae2eab16cdeffc61f84 100644
(file)
--- a/
perl/Route/Node.pm
+++ b/
perl/Route/Node.pm
@@
-25,8
+25,8
@@
use vars qw(%list %valid @ISA $max $filterdef);
%valid = (
dxchan => '0,DXChannel List,parray',
%valid = (
dxchan => '0,DXChannel List,parray',
- nodes => '0,Node
s
,parray',
- users => '0,User
s
,parray',
+ nodes => '0,Node
List
,parray',
+ users => '0,User
List
,parray',
usercount => '0,User Count',
version => '0,Version',
newroute => '0,New Routing?,yesno',
usercount => '0,User Count',
version => '0,Version',
newroute => '0,New Routing?,yesno',
@@
-97,9
+97,9
@@
sub remove_route
foreach my $r (@in) {
next unless $r;
next if $visited{$r->call};
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) {
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;
push @rout, $o;
}
push @in, map{ Route::Node::get($_) } $r->nodes;
@@
-155,7
+155,8
@@
sub add_dxchan
sub del_dxchan
{
my ($self, $dxchan) = @_;
sub del_dxchan
{
my ($self, $dxchan) = @_;
- return $self->_dellist('dxchan', $dxchan);
+ $self->_dellist('dxchan', $dxchan);
+ return $self->is_empty('dxchan') ? ($self) : ();
}
sub usercount
}
sub usercount
@@
-183,7
+184,7
@@
sub unlink_all_users
{
my $self = shift;
my @rout;
{
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;
}
my $uref = Route::User::get($u);
push @rout, $self->del_user($uref) if $uref;
}
@@
-198,7
+199,7
@@
sub new
confess "already have $call in $pkg" if $list{$call};
my $self = $pkg->SUPER::new($call);
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} = [];
$self->{version} = shift || 5000;
$self->{flags} = shift || Route::here(1);
$self->{users} = [];
@@
-213,7
+214,10
@@
sub new
sub delete
{
my $self = shift;
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}};
}
delete $list{$self->{call}};
}