force a config update to *everyone else* on pc20/22
authorminima <minima>
Tue, 16 Jan 2007 01:27:49 +0000 (01:27 +0000)
committerminima <minima>
Tue, 16 Jan 2007 01:27:49 +0000 (01:27 +0000)
perl/DXProt.pm
perl/DXProtHandle.pm

index 4ea652afefefaef6a0c01c0e03e814894a88c5db..843b927270166788c4232f090c79dc379165153c 100644 (file)
@@ -772,30 +772,38 @@ sub send_local_config
        }
 }
 
+sub gen_my_pc92_config
+{
+       my $self = shift;
+       
+       my @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} } DXChannel::get_all();
+       dbg("ROUTE: all dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('routelow');
+       my @localnodes = map { my $r = Route::get($_->{call}); $r ? $r : () } @dxchan;
+       dbg("ROUTE: localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
+       return pc92c($main::routeroot, @localnodes);
+}
+
 sub gen_pc92_update
 {
        my $self = shift;
        my $with_pc92_nodes = shift;
        my $node;
        my @lines;
-       
-       dbg('ROUTE: DXProt::gen_pc92_update start') if isdbg('route');
-
-       # send 'my' configuration for all users and pc92 capable nodes
-       my @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} } DXChannel::get_all();
-       dbg("ROUTE: all dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('route');
-       my @localnodes = map { my $r = Route::get($_->{call}); $r ? $r : () } @dxchan;
-       dbg("ROUTE: localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('route');
-       push @lines, pc92c($main::routeroot, @localnodes);
+       my @dxchan;
+       my @localnodes;
 
+       dbg('ROUTE: DXProt::gen_pc92_update start') if isdbg('routelow');
 
+       # send 'my' configuration for all channels
+       push @lines, $self->gen_my_pc92_config;
+       
        if ($with_pc92_nodes) {
                # send out the configuration of all the directly connected PC92 nodes with current configuration
                # but with the dates that the last config came in with.
                @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} && $_->{do_pc92} } DXChannel::get_all_nodes();
-               dbg("ROUTE: pc92 dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('route');
+               dbg("ROUTE: pc92 dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('routelow');
                @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan;
-               dbg("ROUTE: pc92 localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('route');
+               dbg("ROUTE: pc92 localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
                foreach $node (@localnodes) {
                        if ($node && $node->lastid->{92}) {
                                my @rout = map {my $r = Route::get($_); $r ? ($r) : ()} $node->nodes, $node->users;
@@ -807,9 +815,9 @@ sub gen_pc92_update
        # send the configuration of all the directly connected 'external' nodes that don't handle PC92
        # out with the 'external' marker on the first node.
        @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} && !$_->{do_pc92} } DXChannel::get_all_nodes();
-       dbg("ROUTE: non pc92 dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('route');
+       dbg("ROUTE: non pc92 dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('routelow');
        @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan;
-       dbg("ROUTE: non pc92 localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('route');
+       dbg("ROUTE: non pc92 localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
        foreach $node (@localnodes) {
                if ($node) {
                        my @rout = map {my $r = Route::User::get($_); $r ? ($r) : ()} $node->users;
@@ -817,7 +825,7 @@ sub gen_pc92_update
                } 
        }
 
-       dbg('ROUTE: DXProt::gen_pc92_update end with ' . scalar @lines . ' lines') if isdbg('route');
+       dbg('ROUTE: DXProt::gen_pc92_update end with ' . scalar @lines . ' lines') if isdbg('routelow');
        return @lines;
 }
 
index 748506be3bdb1411c55e84ec408eae3c225601b4..fcc30cfe2255ce9b71cf9db3d935b8b50b413e6d 100644 (file)
@@ -777,13 +777,8 @@ sub send_delayed_pc92
        my $self = shift;
        
        # send out delayed PC92 config for this node if it is external
-       unless ($self->{do_pc92}) {
-               my $node = Route::Node::get($self->{call});
-               if ($node) {
-                       my @rout = map {my $r = Route::User::get($_); $r ? ($r) : ()} $node->users;
-                       $self->route_pc92c($main::mycall, undef, $node, @rout);
-               } 
-       }
+       my $line = $main::me->gen_my_pc92_config;
+       $self->broadcast_route_pc9x($main::mycall, undef, $line, 0);
 }
 
 # send local configuration
@@ -886,15 +881,15 @@ sub handle_22
                        $self->disconnect;
                        return;
                }
-               my $ref = Route::Node::get($self->{call});
-               if ($ref) {
-                       $main::me->route_pc92a($main::mycall, undef, $main::routeroot, $ref);
-               } else {
-                       dbg("PCPROT: disconnecting because pc92 for $self->{call} received") if isdbg('chanerr');
-                       $self->disconnect;
-                       return;
-               }
-       } else {
+#              my $ref = Route::Node::get($self->{call});
+#              if ($ref) {
+#                      $main::me->route_pc92a($main::mycall, undef, $main::routeroot, $ref);
+#              } else {
+#                      dbg("PCPROT: disconnecting because pc92 for $self->{call} received") if isdbg('chanerr');
+#                      $self->disconnect;
+#                      return;
+#              }
+#      } else {
                $self->send_delayed_pc92;
        }
        $self->{lastping} = 0;