X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=c5f6cc81b2a7edcf0043b94e37ac2665d5dbceae;hb=229eee2688f9e4a1f5489b7bfafd7c32bfc12548;hp=e19688bb1bba53295effd70c1a34bcf5326c83b5;hpb=ba799b8ac9feef688cff478a4006399b6dfc183f;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index e19688bb..c5f6cc81 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -1406,6 +1406,7 @@ sub _add_thingy } else { dbg("ROUTE: added user $call to " . $parent->call) if isdbg('routelow'); @rout = $parent->add_user($call, Route::here($here)); + $dxchan->tell_buddies('loginb', $call, $parent->call) if $dxchan; } if ($pc92_slug_changes && $parent == $main::routeroot) { $things_add{$call} = Route::get($call); @@ -1419,6 +1420,7 @@ sub _del_thingy { my $parent = shift; my $s = shift; + my $dxchan = shift; my ($call, $is_node, $is_extnode, $here, $version, $build) = @$s; my @rout; if ($call) { @@ -1428,9 +1430,12 @@ sub _del_thingy dbg("ROUTE: deleting node $call from " . $parent->call) if isdbg('routelow'); @rout = $ref->del($parent) if $ref; } else { - $ref = Route::User::get($call); dbg("ROUTE: deleting user $call from " . $parent->call) if isdbg('routelow'); - @rout = $parent->del_user($ref) if $ref; + $ref = Route::User::get($call); + if ($ref) { + $dxchan->tell_buddies('logoutb', $call, $parent->call) if $dxchan; + @rout = $parent->del_user($ref); + } } if ($pc92_slug_changes && $parent == $main::routeroot) { $things_del{$call} = $ref unless exists $things_add{$call}; @@ -1755,12 +1760,13 @@ sub handle_92 push @radd, $add if $add; } - # do a pass through removing any references to either locally connected nodes or mycall + # do a pass through removing any references to either mycall my @nent; for (@ent) { + my $dxc; next unless $_ && @$_; - if ($_->[0] eq $main::mycall || DXChannel::get($_->[0])) { - dbg("PCPROT: $_->[0] refers to locally connected node, ignored") if isdbg('chanerr'); + if ($_->[0] eq $main::mycall) { + dbg("PCPROT: $_->[0] refers to me, ignored") if isdbg('chanerr'); next; } push @nent, $_; @@ -1772,7 +1778,7 @@ sub handle_92 } } elsif ($sort eq 'D') { for (@nent) { - push @rdel, _del_thingy($parent, $_); + push @rdel, _del_thingy($parent, $_, $self); } } elsif ($sort eq 'C') { my (@nodes, @users); @@ -1806,10 +1812,10 @@ sub handle_92 } # del users here foreach my $r (@$dnodes) { - push @rdel,_del_thingy($parent, [$r, 1]); + push @rdel,_del_thingy($parent, [$r, 1], $self); } foreach my $r (@$dusers) { - push @rdel,_del_thingy($parent, [$r, 0]); + push @rdel,_del_thingy($parent, [$r, 0], $self); } # remember this last PC92C for rebroadcast on demand