X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=c039659bd96dbfab15373c542cf92578f449e503;hb=e1360e52d46c7869b14bfaa8fc7fa12a3aa337b3;hp=25d862cfa52910b8d9b8922fa5e6331c73b1cf45;hpb=4f2384c7d1e6ea06fc2d258a02b54409bf324f12;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 25d862cf..c039659b 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -360,13 +360,20 @@ sub normal if ($pcno == 17) { # remove a user my $node = DXCluster->get_exact($field[2]); + my $dxchan; + if (!$node && ($dxchan = DXChannel->get($field[2]))) { + # add it to the node table if it isn't present and it's + # connected locally + $node = DXNode->new($dxchan, $field[2], 0, 1, 5400); + broadcast_ak1a(pc19($dxchan, $node), $dxchan, $self) unless $dxchan->{isolate}; + return; + } return unless $node; return unless $node->isa('DXNode'); if ($node->dxchan != $self) { dbg('chan', "LOOP: $field[2] came in on wrong channel"); return; } - my $dxchan; if (($dxchan = DXChannel->get($field[2])) && $dxchan != $self) { dbg('chan', "LOOP: $field[2] connected locally"); return;