X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=fbc63bc09ed2df2a5c2304ecf627ca86a0851be7;hb=4ed8f51684c6f2183ffd5e46f1fc69dc4f52ebd9;hp=6d9afb4e488cd3454081c812cff384b9838dfec3;hpb=399d826c56c029796a5c0b397c61a51dfb81ff77;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 6d9afb4e..fbc63bc0 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -238,9 +238,10 @@ sub normal foreach $dxchan (@dxchan) { next if $dxchan == $self; my $routeit; - my ($filter, $hops) = Filter::it($dxchan->{spotfilter}, @spot) if $dxchan->{spotfilter}; + my ($filter, $hops) = Filter::it($dxchan->{spotfilter}, @spot, $self->{call} ) if $dxchan->{spotfilter}; if ($hops) { - $line =~ s/\^H\d+\^\~$/\^H$hops\^\~/; + $routeit = $line; + $routeit =~ s/\^H\d+\^\~$/\^H$hops\^\~/; } else { $routeit = adjust_hops($dxchan, $line); # adjust its hop count by node name next unless $routeit; @@ -716,27 +717,32 @@ sub send_local_config my $self = shift; my $n; my @nodes; - + my @localnodes; + my @remotenodes; + # send our nodes if ($self->{isolate}) { - @nodes = (DXCluster->get_exact($main::mycall)); + @localnodes = (DXCluster->get_exact($main::mycall)); } else { # create a list of all the nodes that are not connected to this connection # and are not themselves isolated, this to make sure that isolated nodes # don't appear outside of this node - @nodes = DXNode::get_all(); + @nodes = DXNode::get_all(); @nodes = grep { $_->dxchan != $self } @nodes; - @nodes = grep { !($_->dxchan && $_->dxchan->isolate) } @nodes; + @nodes = grep { $_->{call} ne $main::mycall } @nodes; + @localnodes = grep { $_->dxchan->{call} eq $_->{call} && !$_->dxchan->{isolate} } @nodes if @nodes; + unshift @localnodes, DXCluster->get_exact($main::mycall); + @remotenodes = grep { $_->dxchan->{call} ne $_->{call} } @nodes if @nodes; } - my @s = $me->pc19(@nodes); + my @s = $me->pc19(@localnodes, @remotenodes); for (@s) { my $routeit = adjust_hops($self, $_); $self->send($routeit) if $routeit; } # get all the users connected on the above nodes and send them out - foreach $n (@nodes) { + foreach $n (@localnodes, @remotenodes) { my @users = values %{$n->list}; my @s = pc16($n, @users); for (@s) {