X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=7bffd606b25276058b368abf94b28de3cc4bc7ac;hb=62d82b83c7cfef2ae3ef3a0ee6dea74ce7a37b2c;hp=ec18e19f499f4298921d127909f01ab6644c14fe;hpb=eb944656dcd2b715338ea025fbad11e918506e26;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index ec18e19f..7bffd606 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -693,9 +693,8 @@ sub normal # input filter if required return unless $self->in_filter_route($parent); - my @rout = $parent->del_user($uref); - - $self->route_pc17($parent, @rout) if @rout; + $parent->del_user($uref); + $self->route_pc17($parent, $uref); return; } @@ -824,6 +823,14 @@ sub normal return; } + # if I get a PC21 from the same callsign as self then treat it + # 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; + } + eph_del_regex("^PC1[79].*$call"); my @rout; @@ -834,11 +841,6 @@ sub normal return; } if ($call ne $main::mycall) { # don't allow malicious buggers to disconnect me! - if ($call eq $self->{call}) { - dbg("PCPROT: Trying to disconnect myself with PC21") if isdbg('chanerr'); - return; - } - my $node = Route::Node::get($call); if ($node) { @@ -1156,7 +1158,7 @@ sub normal return; } @field = map { unpad($_) } @field; - if (WCY::dup($d,@field[3..7])) { + if (WCY::dup($d)) { dbg("PCPROT: Dup WCY Spot ignored\n") if isdbg('chanerr'); return; } @@ -1165,7 +1167,7 @@ sub normal my $rep; eval { - $rep = Local::wwv($self, @field[1..12]); + $rep = Local::wcy($self, @field[1..12]); }; # dbg("Local::wcy error $@") if isdbg('local') if $@; return if $rep;