X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=53bd418ba6fc63e7dc7d627f788a8a74c750a94f;hb=7b616aeabce92e3cb416a5fe6640a288adfe5410;hp=8437ff78ee313ae95816e49f0af0333b4f15c66f;hpb=7cf8fad46075f1ca2b8b30475a26a881c031a0ad;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 8437ff78..53bd418b 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -44,6 +44,7 @@ $main::branch += $BRANCH; use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restime $eph_pc34_restime $last_hour $last10 %eph %pings %rcmds $ann_to_talk + $pingint $obscount %nodehops $baddx $badspotter $badnode $censorpc $rspfcheck $allowzero $decode_dk0wcy $send_opernam @checklist); @@ -65,6 +66,8 @@ $rspfcheck = 1; $eph_restime = 180; $eph_info_restime = 60*60; $eph_pc34_restime = 30; +$pingint = 5*60; +$obscount = 2; @checklist = ( @@ -255,9 +258,9 @@ sub start # ping neighbour node stuff my $ping = $user->pingint; - $ping = 5*60 unless defined $ping; + $ping = $pingint unless defined $ping; $self->{pingint} = $ping; - $self->{nopings} = $user->nopings || 2; + $self->{nopings} = $user->nopings || $obscount; $self->{pingtime} = [ ]; $self->{pingave} = 999; $self->{metric} ||= 100; @@ -625,6 +628,12 @@ sub normal my $ncall = $field[1]; my $newline = "PC16^"; + # do I want users from this channel? + unless ($self->user->wantpc16) { + dbg("PCPROT: don't send users to $self->{call}") if isdbg('chanerr'); + return; + } + # is it me? if ($ncall eq $main::mycall) { dbg("PCPROT: trying to alter config on this node from outside!") if isdbg('chanerr'); return; @@ -699,6 +708,11 @@ sub normal eph_del_regex("^PC16\\^$ncall.*$ucall"); + # do I want users from this channel? + unless ($self->user->wantpc16) { + dbg("PCPROT: don't send users to $self->{call}") if isdbg('chanerr'); + return; + } if ($ncall eq $main::mycall) { dbg("PCPROT: trying to alter config on this node from outside!") if isdbg('chanerr'); return; @@ -1562,7 +1576,7 @@ sub announce sub send_local_config { my $self = shift; - my $n; + my $node; my @nodes; my @localnodes; my @remotenodes; @@ -1581,19 +1595,20 @@ sub send_local_config my @intcalls = map { $_->nodes } @localnodes if @localnodes; my $ref = Route::Node::get($self->{call}); my @rnodes = $ref->nodes; - for my $n (@intcalls) { - push @remotenodes, Route::Node::get($n) unless grep $n eq $_, @rnodes; + for my $node (@intcalls) { + push @remotenodes, Route::Node::get($node) unless grep $node eq $_, @rnodes; } unshift @localnodes, $main::routeroot; } - send_route($self, \&pc19, scalar(@localnodes)+scalar(@remotenodes), @localnodes, @remotenodes); + $self->send_route(\&pc19, scalar(@localnodes)+scalar(@remotenodes), @localnodes, @remotenodes); # get all the users connected on the above nodes and send them out - foreach $n (@localnodes, @remotenodes) { - if ($n) { - send_route($self, \&pc16, 1, $n, map {my $r = Route::User::get($_); $r ? ($r) : ()} $n->users); + foreach $node (@localnodes, @remotenodes) { + if ($node) { + my @rout = map {my $r = Route::User::get($_); $r ? ($r) : ()} $node->users; + $self->send_route(\&pc16, 1, $node, @rout) if @rout && $self->user->wantsendpc16; } else { dbg("sent a null value") if isdbg('chanerr'); } @@ -1690,7 +1705,7 @@ sub load_hops return $self->msg('lh1') unless -e "$main::data/hop_table.pl"; do "$main::data/hop_table.pl"; return $@ if $@; - return 0; + return (); } @@ -1918,7 +1933,8 @@ sub broadcast_route next if $dxchan == $self; next if $dxchan == $main::me; next if $dxchan->user->wantnp; - + next if ($generate == \&pc16 || $generate==\&pc17) && !$dxchan->user->wantsendpc16; + $dxchan->send_route($generate, @_); } } @@ -1927,12 +1943,14 @@ sub broadcast_route sub route_pc16 { my $self = shift; + return unless $self->user->wantpc16; broadcast_route($self, \&pc16, 1, @_); } sub route_pc17 { my $self = shift; + return unless $self->user->wantpc16; broadcast_route($self, \&pc17, 1, @_); }