10Apr01=======================================================================
1. altered PC21 logic somewhat to eliminate dup PC21s
2. disconnect should remove dangling local users in the routing table.
+3. fixed nasty recursive timer bug
09Apr01=======================================================================
1. changed lockfile name to cluster.lck (from .lock) for MSWin's benefit
08Apr01=======================================================================
} elsif (my $conn = Msg->conns($call)) {
$conn->disconnect;
push @out, $self->msg('disc3', $call);
- } elsif (my $ref = DXCLuster->get_exact($call)) {
- my $dxchan = $ref->dxchan;
- if ($dxchan && $dxchan->call eq $main::mycall) {
+ } elsif (my $ref = DXCluster->get_exact($call)) {
+ my $dxchancall = $ref->dxchancall;
+ if ($dxchancall eq $main::mycall || !DXChannel->get($dxchancall)) {
$ref->del;
push @out, $self->msg('disc4', $call);
}
{
my $conn = shift;
dbg('connect', "timed out after $conn->{timeval} seconds");
- $conn->{timeout}->del;
- delete $conn->{timeout};
$conn->disconnect;
}
my $now = time;
# handle things on the timer chain
- for (@timerchain) {
- if ($now >= $_->{t}) {
- &{$_->{proc}}();
- $_->{t} = $now + $_->{interval} if exists $_->{interval};
+ my $t;
+ foreach $t (@timerchain) {
+ if ($now >= $t->{t}) {
+ &{$t->{proc}}();
+ $t->{t} = $now + $t->{interval} if exists $t->{interval};
}
}
}
sub DESTROY
{
- dbg('connll', "Timer destroyed ($notimers)");
- $notimers--;
+ dbg('connll', "timer destroyed ($Timer::notimers)");
+ $Timer::notimers--;
}
1;
dbg('chan', "-> D $call $mess\n");
$conn->send_now("D$call|$mess");
- Msg->sleep(2);
+ sleep(2);
$conn->disconnect;
}