X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=4349b87c506e4fb5a058a1b6874a803e34de92c3;hb=d8187e68f181966eea2dca949ca13e2cbbaf072e;hp=16b67023a7f09d579ff8bfd01ac2246f3188f74a;hpb=9da1742219a27b1c02fd57794412088e4d7b3d1d;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 16b67023..4349b87c 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -371,9 +371,17 @@ sub normal } if ($pcno == 18) { # link request + $self->state('init'); + + # first clear out any nodes on this dxchannel + my @gonenodes = map { $_->dxchan == $self ? $_ : () } DXNode::get_all(); + foreach my $node (@gonenodes) { + next if $node->dxchan == $DXProt::me; + broadcast_ak1a(pc21($node->call, 'Gone, re-init') , $self) unless $self->{isolate}; + $node->del(); + } $self->send_local_config(); $self->send(pc20()); - $self->state('init'); return; # we don't pass these on } @@ -537,6 +545,10 @@ sub normal route($field[1], $line); return; } + if ($field[2] eq $main::mycall) { + dbg('chan', "Trying to merge to myself, ignored"); + return; + } Log('DXProt', "Merge request for $field[3] spots and $field[4] WWV from $field[1]");