X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=perl%2FDXProt.pm;h=5f910bbbc4cc6ffd99ef40426f447797ce6b49b8;hb=e8df1ab836f28cc7a703c524af0410070d4258cb;hp=66434a0e723bf9ca89d748b79da3402cffa2a712;hpb=a204e3cd89e849e97db25879b4ddf62b770bd227;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 66434a0e..5f910bbb 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -645,7 +645,9 @@ sub normal # if there is a parent, proceed, otherwise if there is a latent PC19 in the PC19list, # fix it up in the routing tables and issue it forth before the PC16 unless ($parent) { - if (my $nl = $pc19list{$ncall}) { + my $nl = $pc19list{$ncall}; + + if ($nl && @field > 3) { # 3 because of the hop count! # this is a new (remembered) node, now attach it to me if it isn't in filtered # and we haven't disallowed it @@ -659,8 +661,6 @@ sub normal $user->node($ncall); } - delete $pc19list{$ncall}; # whatever happens - it goes - my $wantpc19 = $user->wantroutepc19; if ($wantpc19 || !defined $wantpc19) { my $new = Route->new($ncall); # throw away @@ -688,6 +688,7 @@ sub normal } else { return; } + delete $pc19list{$ncall}; } } else { dbg("PCPROT: Node $ncall not in config") if isdbg('chanerr'); @@ -916,7 +917,8 @@ sub normal } } else { $pc19list{$call} = [] unless exists $pc19list{$call}; - push @{$pc19list{$call}}, [$self->{call}, $ver, $flags]; + my $nl = $pc19list{$call}; + push @{$pc19list{$call}}, [$self->{call}, $ver, $flags] unless grep $_->[0] eq $self->{call}, @$nl; } }