Index: /trunk/Ohana/src/opihi/pcontrol/HostOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 3203)
+++ /trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 3204)
@@ -3,4 +3,5 @@
 Stack *HostPool_Idle;
 Stack *HostPool_Busy;
+Stack *HostPool_Done;
 Stack *HostPool_Down;
 Stack *HostPool_Off;
@@ -9,4 +10,5 @@
   HostPool_Idle = InitStack ();
   HostPool_Busy = InitStack ();
+  HostPool_Done = InitStack ();
   HostPool_Down = InitStack ();
   HostPool_Off = InitStack ();
@@ -19,4 +21,6 @@
     case PCONTROL_HOST_DOWN:
       return (HostPool_Down);
+    case PCONTROL_HOST_DONE:
+      return (HostPool_Done);
     case PCONTROL_HOST_BUSY:
       return (HostPool_Busy);
@@ -24,8 +28,9 @@
       return (HostPool_Off);
     default:
-      fprintf (stderr, "error: unknown host stack\n");
-      return (NULL);
+      fprintf (stderr, "error: unknown host stack : programming error\n");
+      exit (1);
   }
-  return (NULL);
+  fprintf (stderr, "error: unknown host stack : programming error\n");
+  exit (1);
 }
 
Index: /trunk/Ohana/src/opihi/pcontrol/IOBufferOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/IOBufferOps.c	(revision 3203)
+++ /trunk/Ohana/src/opihi/pcontrol/IOBufferOps.c	(revision 3204)
@@ -9,4 +9,5 @@
 
   ALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
+  bzero (buffer[0].buffer, buffer[0].Nalloc);
 
   return (TRUE);
@@ -27,6 +28,7 @@
 
   if (fd == 0) {
+    fprintf (stderr, "pipe is closed (ReadIOBuffer)\n");
+    return (0);
     /* pipe is closed */
-    return (0);
   }
 
Index: /trunk/Ohana/src/opihi/pcontrol/JobOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/JobOps.c	(revision 3203)
+++ /trunk/Ohana/src/opihi/pcontrol/JobOps.c	(revision 3204)
@@ -3,4 +3,5 @@
 Stack *JobPool_Pending;
 Stack *JobPool_Busy;
+Stack *JobPool_Done;
 Stack *JobPool_Exit;
 Stack *JobPool_Crash;
@@ -9,4 +10,5 @@
   JobPool_Pending = InitStack ();
   JobPool_Busy = InitStack ();
+  JobPool_Done = InitStack ();
   JobPool_Exit = InitStack ();
   JobPool_Crash = InitStack ();
@@ -19,4 +21,6 @@
     case PCONTROL_JOB_BUSY:
       return (JobPool_Busy);
+    case PCONTROL_JOB_DONE:
+      return (JobPool_Done);
     case PCONTROL_JOB_EXIT:
       return (JobPool_Exit);
@@ -24,8 +28,9 @@
       return (JobPool_Crash);
     default:
-      fprintf (stderr, "error: unknown job stack\n");
-      return (NULL);
+      fprintf (stderr, "error: unknown job stack : programming error\n");
+      exit (1);
   }
-  return (NULL);
+  fprintf (stderr, "error: unknown job stack : programming error\n");
+  exit (1);
 }
 
Index: /trunk/Ohana/src/opihi/pcontrol/StartHost.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/StartHost.c	(revision 3203)
+++ /trunk/Ohana/src/opihi/pcontrol/StartHost.c	(revision 3204)
@@ -5,8 +5,12 @@
   int pid;
   int stdio[3];
+  char command[64], shell[64];
 
   /* pid = rconnect (CONNECT, host[0].hostname, PCLIENT, stdio); */
 
-  pid = rconnect ("ssh", host[0].hostname, "pclient", stdio);
+  strcpy (command, "ssh");
+  strcpy (shell, "pclient");
+
+  pid = rconnect (command, host[0].hostname, shell, stdio);
   if (!pid) {     /** failure to start **/
     fprintf (stderr, "failure to start %s\n", host[0].hostname);
Index: /trunk/Ohana/src/opihi/pcontrol/host.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/host.c	(revision 3203)
+++ /trunk/Ohana/src/opihi/pcontrol/host.c	(revision 3204)
@@ -22,4 +22,15 @@
     remove_argument (N, &argc, argv);
     Off = TRUE;
+  }
+ 
+  /* this section needs some help: find the specified host in the stacks */
+  On = FALSE;
+  if ((N = get_argument (argc, argv, "-off"))) {
+    if (Delete || Off) {
+      fprintf (stderr, "only one of -delete, -off, -on\n");
+      return (FALSE);
+    }
+    remove_argument (N, &argc, argv);
+    On = TRUE;
   }
  
Index: /trunk/Ohana/src/opihi/pcontrol/rconnect.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/rconnect.c	(revision 3203)
+++ /trunk/Ohana/src/opihi/pcontrol/rconnect.c	(revision 3204)
@@ -78,4 +78,6 @@
     status = ReadtoIOBuffer (&buffer, stdout_fd[0]);
     p = memstr (buffer.buffer, "CONNECTED", buffer.Nbuffer);
+    fprintf (stderr, "%d  %d  %s\n", i, buffer.Nbuffer, buffer.buffer);
+    usleep (20000);
   }
   if (status == 0) goto pipe_error;
