X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=42479d86216ff9a43df0d773f77be59bbe417ebc;hb=85915352f85d7fbb42bee4cf8f6a684c62b96dc9;hp=bc753c3d784e6b053a5d67d147a8807d7ef6f855;hpb=64d7fcd04e89143f23455c5aae3cc4e410700870;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index bc753c3d..42479d86 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -783,7 +783,21 @@ sub announce sub chat { - goto &announce; + my $self = shift; + my $line = shift; + my $isolate = shift; + my $to = shift; + my $target = shift; + my $text = shift; + my ($filter, $hops); + + if ($self->{annfilter}) { + ($filter, $hops) = $self->{annfilter}->it(@_); + return unless $filter; + } + if (($self->is_spider || $self->is_ak1a) && $_[1] ne $main::mycall) { + send_prot_line($self, $filter, $hops, $isolate, $line); + } } @@ -1008,7 +1022,7 @@ sub adjust_hops my $call = $self->{call}; my $hops; - if (($hops) = $s =~ /\^H(\d+)\^?~?$/o) { + if (($hops) = $s =~ /\^H([-\d]+)\^?~?$/o) { my ($pcno) = $s =~ /^PC(\d\d)/o; confess "$call called adjust_hops with '$s'" unless $pcno; my $ref = $nodehops{$call} if %nodehops; @@ -1017,8 +1031,11 @@ sub adjust_hops return "" if defined $newhops && $newhops == 0; $newhops = $ref->{default} unless $newhops; return "" if defined $newhops && $newhops == 0; - $newhops = $hops if !$newhops; - $s =~ s/\^H(\d+)(\^~?)$/\^H$newhops$2/ if $newhops; + $newhops = $hops unless $newhops; + return "" unless $newhops > 0; + $s =~ s/\^H(\d+)(\^~?)$/\^H$newhops$2/ if $newhops != $hops; + } else { + return "" unless $hops > 0; } } return $s; @@ -1170,7 +1187,7 @@ sub disconnect # here we determine what needs to go out of the routing table my @rout; - if ($node) { + if ($node && $pc39flag != 2) { dbg('%Route::Node::List = ' . join(',', sort keys %Route::Node::list)) if isdbg('routedisc'); @rout = $node->del($main::routeroot);