my $origin = $thing->{origin};
my $chan_call = $dxchan->{call};
+ my @pc19;
+ my @pc21;
+
my $parent = Route::Node::get($origin);
unless ($parent) {
- dbg("Thingy::Rt::cf: received from $origin on $chan_call unknown") if isdbg('chanerr');
- return;
+ dbg("Thingy::Rt::cf: new (unconnected) node $origin arrived") if isdbg('chanerr');
+ $parent = Route::Node::new($origin, 0, 1);
+ push @pc19, $parent;
}
$parent->np(1);
- my @pc19;
- my @pc21;
-
# move the origin over to the user, if required
if ($thing->{user}) {
$origin = $thing->{user};
my $ref = Route::Node::get($origin);
- unless ($ref) {
+ if ($ref) {
+ $parent = $ref;
+ } else {
# auto vivify a node that has come that we don't know about
push @pc19, $parent->add($origin, 0, 1);
$parent = Route::Node::get($origin); # reparent to me now.
next if $call eq $main::mycall;
RouteDB::delete($call, $chan_call);
my $ref = Route::Node::get($call);
- push @pc21, $ref->del($parent) if $ref;
+ if ($ref) {
+ push @pc21, grep {$_} $ref->del($parent);
+ }
}
}
if ($add) {
next if $call eq $main::mycall;
RouteDB::update($call, $chan_call);
my $here = $in{$call};
- push @pc19, $parent->add($call, 0, $here);
+ push @pc19, grep {$_} $parent->add($call, 0, $here);
}
}
$thing->{pc21n} = \@pc21 if @pc21;
my $flag = shift;
my @out = $node->add_user($user, $flag);
- my $ur = _upd_user_rec($user, $node);
+ my $ur = _upd_user_rec($user, $node->{call});
$ur->put;
return @out;
}