sub disconnect
{
my $self = shift;
- my $nopc39 = shift;
+ my $pc39flag = shift;
my $call = $self->call;
- unless ($nopc39) {
+ unless ($pc39flag && $pc39flag == 1) {
$self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op")));
}
# create a list of all the nodes that have gone and delete them from the table
my @nodes;
- foreach my $node (grep { $_->dxchan == $self } DXNode::get_all) {
- next if $node->dxchancall eq $call;
+ foreach my $node (grep { $_->dxchancall eq $call } DXNode::get_all) {
+ next if $node->call eq $call;
next if $node->call eq $main::mycall;
push @nodes, $node->call;
$node->del;
}
# broadcast to all other nodes that all the nodes connected to via me are gone
- unless ($self->{isolate}) {
- push @nodes, $call;
- for (@nodes) {
- broadcast_ak1a(pc21($_, 'Gone.'), $self);
+ unless ($pc39flag && $pc39flag == 2) {
+ unless ($self->{isolate}) {
+ push @nodes, $call;
+ for (@nodes) {
+ broadcast_ak1a(pc21($_, 'Gone.'), $self);
+ }
}
}