X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXChannel.pm;h=9bde6aa8fe4a30829b5dfed54895ec92250fd0b7;hb=2c55d933fc8883717c59c2e7d25dc82d63e3f507;hp=b3929c1f2a2d5b45b53a09169294b29aa952952f;hpb=fb554d0fdb1d30120dbfff15514c51f683dc17a8;p=spider.git diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index b3929c1f..9bde6aa8 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -70,6 +70,10 @@ use vars qw(%channels %valid); group => '0,Access Group,parray', # used to create a group of users/nodes for some purpose or other isolate => '9,Isolate network,yesno', delayed => '9,Delayed messages,parray', + annfilter => '9,Announce Filter', + wwvfilter => '9,WWV Filter', + spotfilter => '9,Spot Filter', + passwd => '9,Passwd List,parray', ); # create a new channel object [$obj = DXChannel->new($call, $msg_conn_obj, $user_obj)] @@ -207,7 +211,7 @@ sub msg return DXM::msg($self->{lang}, @_); } -# stick a broadcast on the delayed queue +# stick a broadcast on the delayed queue (but only up to 20 items) sub delay { my $self = shift; @@ -215,6 +219,9 @@ sub delay $self->{delayed} = [] unless $self->{delayed}; push @{$self->{delayed}}, $s; + if (@{$self->{delayed}} >= 20) { + shift @{$self->{delayed}}; # lose oldest one + } } # change the state of the channel - lots of scope for debugging here :-) @@ -229,9 +236,7 @@ sub state # if there is any queued up broadcasts then splurge them out here if ($self->{delayed} && ($self->{state} eq 'prompt' || $self->{state} eq 'convers')) { - for (@{$self->{delayed}}) { - $self->send($_); - } + $self->send (@{$self->{delayed}}); delete $self->{delayed}; } }