use Filter;
use Prefix;
use Route;
+use DXLog;
+
use strict;
use vars qw(%channels %valid @ISA $count $maxerrors);
beep => '0,Want Beeps,yesno',
build => '1,Node Build',
call => '0,Callsign',
+ cmdcount => '5,Cmds in cmdinterval',
+ cmdintstart => '5,Cmd int start,atime',
cluster => '5,Cluster data',
conf => '0,In Conference?,yesno',
conn => '9,Msg Conn ref',
enhanced => '5,Enhanced Client,yesno',
errors => '9,Errors',
func => '5,Function',
- group => '0,Access Group,parray', # used to create a group of users/nodes for some purpose or other.
+ group => '0,Access Group,parray',
gtk => '5,Using GTK,yesno',
handle_xml => '9,Handles XML,yesno',
here => '0,Here?,yesno',
talk => '0,Want Talk,yesno',
talklist => '0,Talk List,parray',
user => '9,DXUser ref',
+ user_interval => '0,Prompt Idle Time',
ve7cc => '0,VE7CC program special,yesno',
verified => '9,Verified?,yesno',
version => '1,Node Version',
wx => '0,Want WX,yesno',
);
-$maxerrors = 5; # the maximum number of concurrent errors allowed before disconnection
+$maxerrors = 10; # the maximum number of concurrent errors allowed before disconnection
# object destruction
sub DESTROY
{
my $self = shift;
my $e = shift;
- if (++$self->{errors} > $maxerrors) {
+ if ($self != $main::me && ++$self->{errors} > $maxerrors) {
$self->send($self->msg('e26'));
+ LogDbg('err', "DXChannel $self->{call}: too many errors ($self->{errors} > $maxerrors), disconnecting");
$self->disconnect;
return ();
} else {
- return ($self->msg($e));
+ return ($e ? $self->msg($e) : '');
}
}
}
}
+# try to replace the in-core version of the dxchan with the one that has been modified with items like filters
+sub replace
+{
+ my $self = shift;
+ my $call = shift;
+ if (ref $self) {
+ $call ||= $self->{call};
+ $channels{$call} = $self;
+ }
+}
+
#no strict;
sub AUTOLOAD
{