@forward = (); # msg forward table
$timeout = 30*60; # forwarding timeout
$waittime = 60*60; # time an aborted outgoing message waits before trying again
-$queueinterval = 5*60; # run the queue every 5 minutes
+$queueinterval = 2*60; # run the queue every 2 minutes
$lastq = 0;
my $node = $_;
my $ref = $busy{$_};
if (exists $ref->{lastt} && $main::systime > $ref->{lastt} + $timeout) {
+ dbg('msg', "Timeout, stopping msgno: $ref->{msgno} -> $node");
$ref->stop_msg($node);
# delay any outgoing messages that fail
if (exists $busy{$f[2]}) {
my $ref = $busy{$f[2]};
my $tonode = $ref->{tonode};
+ dbg('msg', "Busy, stopping msgno: $ref->{msgno} -> $f[2]");
$ref->stop_msg($self->call);
}
$busy{$f[2]} = $ref; # set interlock
$self->send(DXProt::pc30($f[2], $f[1], $stream)); # send ack
$ref->{lastt} = $main::systime;
+
+ # look to see whether this is a non private message sent to a known callsign
+ my $uref = DXUser->get_current($ref->{to});
+ if (iscallsign($ref->{to}) && !$ref->{private} && $uref && $uref->homenode) {
+ $ref->{private} = 1;
+ dbg('msg', "set bull to $ref->{to} to private");
+ }
last SWITCH;
}
$ref->{count} = 0;
}
$ref->{lastt} = $main::systime;
+ } else {
+ dbg('msg', "PC29 from unknown stream $f[3] from $f[2]" );
+ $self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
last SWITCH;
}
$ref->send_tranche($self);
$ref->{lastt} = $main::systime;
} else {
+ dbg('msg', "PC30 from unknown stream $f[3] from $f[2]" );
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
last SWITCH;
$ref->send_tranche($self);
$ref->{lastt} = $main::systime;
} else {
+ dbg('msg', "PC31 from unknown stream $f[3] from $f[2]" );
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
last SWITCH;
}
$ref->stop_msg($self->call);
} else {
+ dbg('msg', "PC32 from unknown stream $f[3] from $f[2]" );
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
# queue_msg(0);
}
$ref->stop_msg($self->call);
} else {
+ dbg('msg', "PC33 from unknown stream $f[3] from $f[2]" );
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
$ref->{stream} = $stream;
$ref->{count} = 0; # no of lines between PC31s
$ref->{file} = 1;
+ $ref->{lastt} = $main::systime;
$work{"$f[2]$stream"} = $ref; # store in work
$self->send(DXProt::pc30($f[2], $f[1], $stream)); # send ack
# ignore 'delayed' messages until their waiting time has expired
if (exists $ref->{waitt}) {
- next if $ref->{waitt} < $main::systime;
+ next if $ref->{waitt} > $main::systime;
delete $ref->{waitt};
}
$self->{fromnode} = $main::mycall;
$busy{$self->{tonode}} = $self;
$work{$self->{tonode}} = $self;
+ $self->{lastt} = $main::systime;
$dxchan->send(DXProt::pc28($self->{tonode}, $self->{fromnode}, $self->{to}, $self->{from}, $self->{t}, $self->{private}, $self->{subject}, $self->{origin}, $self->{rrreq}));
}