X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=5ab4186b2c64cb6e8082f5b57800a4c61dc30a82;hb=49a14209678e26e31b2a9c89aec330c1a7a87b80;hp=9791850521d5fbb00ac2ba190223fe9436ce91d5;hpb=cb340a0cf45f789d95201e4d4b9aec4ed581622d;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 97918505..5ab4186b 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -63,7 +63,7 @@ $last10 = $last_pc50 = time; $ann_to_talk = 1; $rspfcheck = 1; $eph_restime = 180; -$eph_info_restime = 15*60; +$eph_info_restime = 60*60; $eph_pc34_restime = 30; @checklist = @@ -442,6 +442,7 @@ sub normal } } + my @spot = Spot::prepare($field[1], $field[2], $d, $field[5], $field[6], $field[7]); # global spot filtering on INPUT if ($self->{inspotsfilter}) { @@ -451,7 +452,10 @@ sub normal return; } } - + + # this goes after the input filtering, but before the add + # so that if it is input filtered, it isn't added to the dup + # list. This allows it to come in from a "legitimate" source if (Spot::dup($field[1], $field[2], $d, $field[5])) { dbg("PCPROT: Duplicate Spot ignored\n") if isdbg('chanerr'); return; @@ -617,7 +621,7 @@ sub normal next unless $call && $conf && defined $here && is_callsign($call); next if $call eq $main::mycall; - eph_del_regex("^PC17\^$call\^$ncall"); + eph_del_regex("^PC17\\^$call\\^$ncall"); $conf = $conf eq '*'; @@ -669,7 +673,7 @@ sub normal return; } - eph_del_regex("^PC16.*$ncall.*$ucall"); + eph_del_regex("^PC16\\^$ncall.*$ucall"); if ($ncall eq $main::mycall) { dbg("PCPROT: trying to alter config on this node from outside!") if isdbg('chanerr'); @@ -739,7 +743,7 @@ sub normal my $ver = $field[$i+3]; next unless defined $here && defined $conf && is_callsign($call); - eph_del_regex("^PC(?:21\^$call|17\^[^\^]+\^$call)"); + eph_del_regex("^PC(?:21\\^$call|17\\^[^\\^]+\\^$call)"); # check for sane parameters # $ver = 5000 if $ver eq '0000'; @@ -830,7 +834,6 @@ sub normal # as a PC39: I have gone away if ($call eq $self->call) { $self->disconnect(1); - eph_del_regex("^PC(?:1[679]|21).*$field[1]"); return; } @@ -989,7 +992,7 @@ sub normal } if ($pcno == 35) { # remote command replies - eph_del_regex("^PC35\^$field[2]\^$field[1]\^"); + eph_del_regex("^PC35\\^$field[2]\\^$field[1]\\^"); $self->process_rcmd_reply($field[1], $field[2], $field[1], $field[3]); return; } @@ -1003,7 +1006,6 @@ sub normal if ($pcno == 39) { # incoming disconnect if ($field[1] eq $self->{call}) { $self->disconnect(1); - eph_del_regex("^PC(?:1[679]|21).*$field[1]"); } else { dbg("PCPROT: came in on wrong channel") if isdbg('chanerr'); } @@ -1762,6 +1764,10 @@ sub disconnect $self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op"))); } + # get rid of any PC16 and 19s + eph_del_regex("^PC16\\^$call"); + eph_del_regex("^PC19\\^.*$call"); + # do routing stuff my $node = Route::Node::get($call); my @rout; @@ -1966,5 +1972,10 @@ sub eph_list } return @out; } + +sub run_cmd +{ + goto &DXCommandmode::run_cmd; +} 1; __END__