X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;ds=inline;f=perl%2FDXProtHandle.pm;h=5d7aee9a73cfe519c95a080dc5d128d725959b15;hb=4fd5f55c3716bfef803aec68a4a632e220e54862;hp=41986240d6d374c2b0248571199e2bc8dfbfc399;hpb=8269f4aca3cec04a72fde0b84fbc4aeca0277b89;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 41986240..5d7aee9a 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -44,6 +44,7 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim $investigation_int $pc19_version $myprot_version %nodehops $baddx $badspotter $badnode $censorpc $rspfcheck $allowzero $decode_dk0wcy $send_opernam @checklist + $eph_pc15_restime ); # incoming talk commands @@ -375,6 +376,22 @@ sub handle_12 $self->route($_[2], $line); } } + +sub handle_15 +{ + my $self = shift; + my $pcno = shift; + my $line = shift; + my $origin = shift; + + if (eph_dup($line, $eph_pc15_restime)) { + dbg("PCPROT: Ephemeral dup, dropped") if isdbg('chanerr'); + } else { + unless ($self->{isolate}) { + DXChannel::broadcast_nodes($line, $self) if $line =~ /\^H\d+\^?~?$/; # send it to everyone but me + } + } +} # incoming user sub handle_16 @@ -715,7 +732,7 @@ sub handle_19 if (@rout) { $self->route_pc21($self->{call}, $line, @rout); $self->route_pc19($self->{call}, $line, @rout); - $self->route_pc92a($main::mycall, $line, $main::routemain, @rout); + $self->route_pc92a($main::mycall, $line, $main::routeroot, @rout); } } @@ -787,7 +804,7 @@ sub handle_21 if (@rout) { $self->route_pc21($origin, $line, @rout); - $self->route_pc92d($main::mycall, $line, $main::routemain, @rout); + $self->route_pc92d($main::mycall, $line, $main::routeroot, @rout); } } @@ -1411,12 +1428,16 @@ sub handle_92 return; } - $self->broadcast_route_pc9x($origin, undef, $line, 0); + $self->broadcast_route_pc9x($pcall, undef, $line, 0); foreach my $r (@rdel) { + next unless $r; + $self->route_pc21($pcall, undef, $r) if $r->isa('Route::Node'); $self->route_pc17($pcall, undef, $parent, $r) if $r->isa('Route::User'); } foreach my $r (@radd) { + next unless $r; + $self->route_pc19($pcall, undef, $r) if $r->isa('Route::Node'); $self->route_pc16($pcall, undef, $parent, $r) if $r->isa('Route::User'); }