X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FThingy%2FRt.pm;h=71b7a43aba7cd28070aec45b4a375c7c8f9b20e3;hb=f942dabdab73e5841f16ead2a41a52d6b5b05eb8;hp=86c26ea8d487731e740b8d70808089bf4a113c21;hpb=2f4dc5347389ce78ae58567c0c23d09342c65fcd;p=spider.git diff --git a/perl/Thingy/Rt.pm b/perl/Thingy/Rt.pm index 86c26ea8..71b7a43a 100644 --- a/perl/Thingy/Rt.pm +++ b/perl/Thingy/Rt.pm @@ -84,16 +84,17 @@ sub handle_cf 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}; @@ -130,7 +131,9 @@ sub handle_cf 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) { @@ -138,7 +141,7 @@ sub handle_cf 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; @@ -190,7 +193,7 @@ sub _add_user 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; }