X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXChannel.pm;h=1a98c7950ad906c1e99541515bb47ac61aaa3a0c;hb=refs%2Fheads%2Fmojo;hp=240142c65107a80e6979fa417935f247fd4f1866;hpb=b9e57057d60a952bd43acdbeb2420ad7964b96f8;p=spider.git diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index 240142c6..1a98c795 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -33,6 +33,8 @@ use DXDebug; use Filter; use Prefix; use Route; +use DXLog; + use strict; use vars qw(%channels %valid @ISA $count $maxerrors); @@ -50,6 +52,8 @@ $count = 0; 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', @@ -64,7 +68,7 @@ $count = 0; 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', @@ -124,6 +128,7 @@ $count = 0; 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', @@ -135,7 +140,7 @@ $count = 0; 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 @@ -204,12 +209,13 @@ sub _error_out { 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) : ''); } } @@ -807,6 +813,17 @@ sub isregistered } } +# 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 {