INET connector
[scpubgit/Object-Remote.git] / lib / Object / Remote / Connector / LocalSudo.pm
index 043b688..f3db7ea 100644 (file)
@@ -1,5 +1,6 @@
 package Object::Remote::Connector::LocalSudo;
 
+use Object::Remote::Logging qw (:log :dlog);
 use Symbol qw(gensym);
 use Module::Runtime qw(use_module);
 use IPC::Open3;
@@ -64,9 +65,13 @@ sub _start_perl {
                 ->watch_io(
                     handle => $sudo_stderr,
                     on_read_ready => sub {
-                      if (sysread($sudo_stderr, my $buf, 1024) > 0) {
+                      Dlog_debug { "LocalSudo: Preparing to read data from $_" } $sudo_stderr;
+                      if (sysread($sudo_stderr, my $buf, 32768) > 0) {
+                        log_trace { "LocalSudo: successfully read data, printing it to STDERR" };
                         print STDERR $buf;
+                        log_trace { "LocalSudo: print() to STDERR is done" };
                       } else {
+                        log_debug { "LocalSudo: received EOF or error on file handle, unwatching it" };
                         Object::Remote->current_loop
                                       ->unwatch_io(
                                           handle => $sudo_stderr,
@@ -84,7 +89,8 @@ push @Object::Remote::Connection::Guess, sub {
   for ($_[0]) {
     # username followed by @
     if (defined and !ref and /^ ([^\@]*?) \@ $/x) {
-      return __PACKAGE__->new(target_user => $1);
+      shift(@_);
+      return __PACKAGE__->new(@_, target_user => $1);
     }
   }
   return;