$self->{pingint} = $ping;
$self->{nopings} = $user->nopings || 2;
$self->{pingtime} = [ ];
- $self->{pingave} = 0;
+ $self->{pingave} = 999;
+ $self->{lastping} = $main::systime;
# send initialisation string
unless ($self->{outbound}) {
$self->send(pc18());
- $self->{lastping} = $main::systime;
- } else {
- $self->{lastping} = $main::systime + ($self->pingint / 2);
}
+
$self->state('init');
$self->{pc50_t} = $main::systime;
$self->send_local_config();
$self->send(pc22());
$self->state('normal');
+ $self->{lastping} = 0;
return;
}
if ($pcno == 22) {
$self->state('normal');
+ $self->{lastping} = 0;
return;
}
my $pc39flag = shift;
my $call = $self->call;
+ return if $self->{disconnecting}++;
+
unless ($pc39flag && $pc39flag == 1) {
$self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op")));
}
for (; @_ && $no; $no--) {
my $r = shift;
- if ($self->{routefilter}) {
+ if (!$self->{isolate} && $self->{routefilter}) {
$filter = undef;
if ($r) {
($filter, $hops) = $self->{routefilter}->it($self->{call}, $self->{dxcc}, $self->{itu}, $self->{cq}, $r->call, $r->dxcc, $r->itu, $r->cq);
dbg("was sent a null value") if isdbg('chanerr');
}
} else {
- push @rin, $r;
+ push @rin, $r unless $self->{isolate} && $r->call ne $main::mycall;
}
}
if (@rin) {
my $dxchan;
my $line;
- foreach $dxchan (@dxchan) {
- next if $dxchan == $self;
- next if $dxchan == $me;
- if ($dxchan->{routefilter}) {
+ unless ($self->{isolate}) {
+ foreach $dxchan (@dxchan) {
+ next if $dxchan == $self;
+ next if $dxchan == $me;
$dxchan->send_route($generate, @_);
- } else {
- $dxchan->send_route($generate, @_) unless $self->{isolate} || $dxchan->{isolate};
}
}
}