+18Jul07=======================================================================
+1. Change the meaning of set/isolate. Set/isolate now works in both directions
+in that an isolated node will only have its local config remembered and will
+only be sent this nodes local config. This is exactly equivalent to both
+ends setting set/isolate. If that is already the case then there should be
+no noticeable change. Any extra that the far node sends, over and above its
+local config will now be ignored.
17Jul07=======================================================================
1. remove dupefile on startup and on ending the node. Add clear/dupefile
command to allow people to do it at runtime as well.
for (; @_ && $no; $no--) {
my $r = shift;
+ # don't send messages with $self's call in back to them
+ if ($r->call eq $self->{call}) {
+ dbg("PCPROT: trying to send $self->{call} back itself") if isdbg('chanerr');
+ next;
+ }
+
if (!$self->{isolate} && $self->{routefilter}) {
$filter = undef;
if ($r) {
next if $origin eq $dxchan->{call}; # don't route some from this call back again.
next unless $dxchan->isa('DXProt');
next if $dxchan->{do_pc9x};
- next if ($generate == \&pc16 || $generate==\&pc17) && !$dxchan->user->wantsendpc16;
-
+ if ($generate == \&pc16 || $generate==\&pc17) {
+ next unless $dxchan->user->wantsendpc16;
+ }
$dxchan->send_route($origin, $generate, @_);
}
}
return;
}
+ # isolate now means only accept stuff from this call only
+ if ($self->{isolate} && $ncall ne $self->{call}) {
+ dbg("PCPROT: $self->{call} isolated, $ncall ignored") if isdbg('chanerr');
+ return;
+ }
+
my $parent = Route::Node::get($ncall);
if ($parent) {
return;
}
+ # isolate now means only accept stuff from this call only
+ if ($self->{isolate} && $ncall ne $self->{call}) {
+ dbg("PCPROT: $self->{call} isolated, $ncall ignored") if isdbg('chanerr');
+ return;
+ }
+
RouteDB::delete($ncall, $self->{call});
my $uref = Route::User::get($ucall);
}
}
+ # isolate now means only accept stuff from this call only
+ if ($self->{isolate} && $call ne $self->{call}) {
+ dbg("PCPROT: $self->{call} isolated, $call ignored") if isdbg('chanerr');
+ next;
+ }
+
my $user = check_add_node($call);
# if (eph_dup($genline)) {
eph_del_regex("^PC1[679].*$call");
# if I get a PC21 from the same callsign as self then ignore it
- if ($call eq $self->call) {
+ if ($call eq $self->{call}) {
dbg("PCPROT: self referencing PC21 from $self->{call}");
return;
}
+ # for the above reason and also because of the check for PC21s coming
+ # in for self->call from outside being ignored further down
+ # we don't need any isolation code here, because we will never
+ # act on a PC21 with self->call in it.
+
RouteDB::delete($call, $self->{call});
my $parent = Route::Node::get($self->{call});