working remote module loading
[scpubgit/Tak.git] / lib / Tak / ModuleLoader.pm
index 8d5b837..924230b 100644 (file)
@@ -5,13 +5,15 @@ use Moo;
 has remote => (is => 'ro', required => 1);
 
 sub inc_callback {
-  sub { $self->maybe_load_module($_[1]) }
+  my ($self) = @_;
+  sub { return if our $In_Reentry; $self->maybe_load_module($_[1]) }
 }
 
 sub maybe_load_module {
   my ($self, $module) = @_;
-  my $result = $self->remote->blocking_request(source_for => $module);
-  if (my $code = $result->{code}) {
+  local our $In_Reentry = 1;
+  my ($status, $code) = $self->remote->blocking_request(source_for => $module);
+  if ($status eq 'RESULT') {
     open my $fh, '<', \$code;
     return $fh;
   }