memory leak fixage
[scpubgit/Tak.git] / lib / Tak / MetaService.pm
index 203f7af..e80b7c5 100644 (file)
@@ -29,8 +29,13 @@ sub handle_register {
       if (my ($svc, @rest) = @{$expose->{$name}}) {
         die "router has no service ${svc}"
           unless my $service = $router->services->{$svc};
-        $args{$name} = Tak::Client->new(service => $service)
-                                  ->curry(@rest);
+        my $client_class = (
+          Scalar::Util::isweak($router->services->{$svc})
+            ? 'Tak::WeakClient'
+            : 'Tak::Client'
+        );
+        $args{$name} = $client_class->new(service => $service)
+                                    ->curry(@rest);
       } else {
         $args{$name} = Tak::WeakClient->new(service => $router);
       }