From 9e5520826fe61fd3ac6941f2b8bf736a432eaa15 Mon Sep 17 00:00:00 2001 From: minima Date: Tue, 2 Jan 2007 23:19:19 +0000 Subject: [PATCH] add external entity sending on init --- perl/DXProt.pm | 20 +++++++++++++++++--- perl/DXProtHandle.pm | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 58b5982d..24cffb8d 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -769,11 +769,25 @@ sub send_pc92_config my $node; dbg('DXProt::send_pc92_config') if isdbg('trace'); - + + # send 'my' configuration my @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} } DXChannel::get_all(); - my @localnodes = map { my $r = Route::get($_->{call}); $r ? $r : () } @dxchan if @dxchan; + my @localnodes = map { my $r = Route::get($_->{call}); $r ? $r : () } @dxchan; $self->send_route_pc92($main::mycall, \&pc92c, scalar @localnodes, @localnodes); -} + + # send the configuration of all the '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(); + @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan; + foreach $node (@localnodes) { + if ($node) { + my @rout = map {my $r = Route::User::get($_); $r ? ($r) : ()} $node->users; + $self->send_route_pc92($main::mycall, \&pc92c, 1, $node, @rout) if @rout; + } else { + dbg("sent a null value") if isdbg('chanerr'); + } + } +} # # route a message down an appropriate interface for a callsign diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 98218047..858ea00e 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -1264,6 +1264,7 @@ sub _encode_pc92_call $flag |= $ref->here ? 1 : 0; if ($ref->isa('Route::Node') || $ref->isa('DXProt')) { $flag |= 4; + $flag |= 2 if $call ne $main::mycall && DXChannel::get($call); if ($ext) { if ($ref->version) { my $version = $ref->version || 1.0; -- 2.34.1