X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=8b415974ed55cef98fd1062cc448576b8ca02a5e;hb=eef5dcbb47966521543e82dbb0b9269ec245d3d8;hp=fdd3025a99bd290d19669c0a24adec5d438499f7;hpb=9f4c467f60ec71c0bbb2b27f91ca7d86a40b4597;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index fdd3025a..8b415974 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -74,7 +74,7 @@ $obscount = 2; $chatdupeage = 20 * 60; $chatimportfn = "$main::root/chat_import"; $pc19_version = 5454; # the visible version no for outgoing PC19s generated from pc59 -$pc92_update_period = 2*60*60; # the period between outgoing PC92 C updates +$pc92_update_period = 4*60*60; # the period between outgoing PC92 C updates $pc92_short_update_period = 15*60; # shorten the update period after a connection or start up $pc92_extnode_update_period = 1*60*60; # the update period for external nodes $pc92_keepalive_period = 1*60*60; # frequency of PC92 K (keepalive) records @@ -457,12 +457,10 @@ sub process $pc50s = pc50($main::me, scalar DXChannel::get_all_users); eph_dup($pc50s); $last_pc50 = $t; - time_out_pc92_routes(); } foreach $dxchan (@dxchan) { next unless $dxchan->is_node; - next if $dxchan->handle_xml; next if $dxchan == $main::me; # send the pc50 @@ -471,12 +469,14 @@ sub process # send a ping out on this channel if ($dxchan->{pingint} && $t >= $dxchan->{pingint} + $dxchan->{lastping}) { if ($dxchan->{nopings} <= 0) { + dbg("ROUTE: $dxchan->{call} disconnected on ping obscount") if isdbg('obscount'); $dxchan->disconnect; } else { DXXml::Ping::add($main::me, $dxchan->call); $dxchan->{nopings} -= 1; $dxchan->{lastping} = $t; $dxchan->{lastping} += $dxchan->{pingint} / 2 unless @{$dxchan->{pingtime}}; + dbg("ROUTE: $dxchan->{call} ping obscount = $dxchan->{nopings}") if isdbg('obscount'); } } } @@ -510,6 +510,7 @@ sub process # do the keepalive for me, if required if ($main::systime >= $main::me->{next_pc92_keepalive}) { + time_out_pc92_routes(); $main::me->broadcast_pc92_keepalive($main::mycall); } @@ -547,6 +548,7 @@ sub send_dx_spot foreach $dxchan (@dxchan) { next if $dxchan == $main::me; next if $dxchan == $self && $self->is_node; + next if $line =~ /PC61/ && !$dxchan->is_spider && !$dxchan->is_user; $dxchan->dx_spot($line, $self->{isolate}, @_, $self->{call}); } } @@ -855,8 +857,10 @@ sub send_local_config } elsif ($self->{do_pc9x}) { dbg("send_local_config: doing pc9x"); my $node = Route::Node::get($self->{call}); - $self->send_last_pc92_config($main::routeroot); - $self->send(pc92a($main::routeroot, $node)) unless $main::routeroot->last_PC92C =~ /$self->{call}/; +# $self->send_last_pc92_config($main::routeroot); +# $self->send(pc92a($main::routeroot, $node)) unless $main::routeroot->last_PC92C =~ /$self->{call}/; + $self->send(pc92a($main::routeroot, $node)); + $self->send(pc92k($main::routeroot)); } else { # create a list of all the nodes that are not connected to this connection # and are not themselves isolated, this to make sure that isolated nodes @@ -1206,12 +1210,12 @@ sub addrcmd sub disconnect { my $self = shift; - my $pc39flag = shift; + my $pc39flag = shift || 0; my $call = $self->call; return if $self->{disconnecting}++; - unless ($pc39flag && $pc39flag == 1) { + unless ($pc39flag == 1) { $self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op"))); } @@ -1272,7 +1276,7 @@ sub disconnect } # broadcast to all other nodes that all the nodes connected to via me are gone - unless ($pc39flag && $pc39flag == 2) { + unless ($pc39flag == 2) { $self->route_pc21($main::mycall, undef, @rout) if @rout; $self->route_pc92d($main::mycall, undef, $main::routeroot, $node) if $node; }