1. fixed more of the "xxx disappeared from yyy" messages
2. altered the build no logic so that it always checksums the same files
regardless of whatever else you might have in the directory.
+3. made shortcut at shutdown so that you don't get a storm of PC21s on busy
+nodes as each connection goes down. Just send a pc39 to each interface and
+nothing else.
10Apr01=======================================================================
1. altered PC21 logic somewhat to eliminate dup PC21s
2. disconnect should remove dangling local users in the routing table.
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")));
}
}
# 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);
+ }
}
}
# disconnect users
foreach $dxchan (DXChannel->get_all()) {
next if $dxchan->is_node;
- $dxchan->disconnect unless $dxchan == $DXProt::me;
+ $dxchan->disconnect(2) unless $dxchan == $DXProt::me;
}
# disconnect AGW
DXDb::closeall;
# close all listeners
- for (@listeners) {
- $_->close_server;
+ foreach my $l (@listeners) {
+ $l->close_server;
}
dbg('chan', "DXSpider version $version, build $build ended");
$conn->conns("Server $clusteraddr/$clusterport");
push @listeners, $conn;
dbg('err', "Internal port: $clusteraddr $clusterport");
-for (@main::listen) {
- $conn = ExtMsg->new_server($_->[0], $_->[1], \&login);
- $conn->conns("Server $_->[0]/$_->[1]");
+foreach my $l (@main::listen) {
+ $conn = ExtMsg->new_server($l->[0], $l->[1], \&login);
+ $conn->conns("Server $l->[0]/$l->[1]");
push @listeners, $conn;
- dbg('err', "External Port: $_->[0] $_->[1]");
+ dbg('err', "External Port: $l->[0] $l->[1]");
}
AGWrestart();