X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXChannel.pm;h=9bde6aa8fe4a30829b5dfed54895ec92250fd0b7;hb=2c55d933fc8883717c59c2e7d25dc82d63e3f507;hp=2b4fda78a20bf554916139a28157b52d20621342;hpb=8942c27356acc5d5f5a20134461bcf7e6bd6a044;p=spider.git diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index 2b4fda78..9bde6aa8 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -73,6 +73,7 @@ use vars qw(%channels %valid); 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)] @@ -210,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; @@ -218,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 :-) @@ -232,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}; } }