Index: /trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c	(revision 10660)
+++ /trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c	(revision 10661)
@@ -40,15 +40,4 @@
       FreeIOBuffer (&buffer);
       return (TRUE);
-
-# if (0)      
-      HarvestHost (host[0].pid);
-      // unlink host & job
-      job[0].host = NULL;
-      host[0].job = NULL;
-      PutHost (host, PCONTROL_HOST_DOWN, STACK_BOTTOM);
-      PutJobSetState (job, PCONTROL_JOB_PENDING, STACK_BOTTOM, PCONTROL_JOB_HUNG);
-      FreeIOBuffer (&buffer);
-      return (TRUE);
-# endif
 
     case PCLIENT_GOOD:
Index: /trunk/Ohana/src/opihi/pcontrol/CheckDoneHost.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/CheckDoneHost.c	(revision 10660)
+++ /trunk/Ohana/src/opihi/pcontrol/CheckDoneHost.c	(revision 10661)
@@ -27,5 +27,5 @@
     case PCLIENT_HUNG:
       // don't do anything drastic, just try again later
-      PutHost (host, PCONTROL_HOST_BUSY, STACK_BOTTOM);
+      PutHost (host, PCONTROL_HOST_DONE, STACK_BOTTOM);
       if (DEBUG || VerboseMode()) gprint (GP_ERR, "host %s is not responding\n", host[0].hostname);
       FreeIOBuffer (&buffer);
Index: /trunk/Ohana/src/opihi/pcontrol/KillJob.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/KillJob.c	(revision 10660)
+++ /trunk/Ohana/src/opihi/pcontrol/KillJob.c	(revision 10661)
@@ -31,18 +31,8 @@
     case PCLIENT_HUNG:
       // don't do anything drastic, just keep trying
-      if (VerboseMode()) gprint (GP_ERR, "client is busy, not responding");
+      // XXX move to which stack??
+      gprint (GP_ERR, "client is busy, not responding (KillJob)");
       FreeIOBuffer (&buffer);
       return (TRUE);
-
-# if (0)
-      HarvestHost (host[0].pid);
-      // unlink host & job
-      job[0].host = NULL;
-      host[0].job = NULL;
-      PutHost (host, PCONTROL_HOST_DOWN, STACK_BOTTOM);
-      PutJobSetState (job, PCONTROL_JOB_PENDING, STACK_BOTTOM, PCONTROL_JOB_HUNG);
-      FreeIOBuffer (&buffer);
-      return (TRUE);
-# endif
 
     case PCLIENT_GOOD:
Index: /trunk/Ohana/src/opihi/pcontrol/StartJob.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/StartJob.c	(revision 10660)
+++ /trunk/Ohana/src/opihi/pcontrol/StartJob.c	(revision 10661)
@@ -40,7 +40,16 @@
       // we need the job start to return a valid Job ID, 
       // give up on jobs which don't get started.
+      // XXX we are sensitive here to the time it takes pclient
+      // to fork the job.  if this is slow, the client may appear to hang.
       gprint (GP_ERR, "host %s is not responding (StartJob)\n", host[0].hostname);
       if (VerboseMode()) gprint (GP_ERR, "host %s is not responding\n", host[0].hostname);
-      goto failure;
+
+      // unlink host & job
+      job[0].host = NULL;
+      host[0].job = NULL;
+      PutHost (host, PCONTROL_HOST_DONE, STACK_BOTTOM);
+      PutJob (job, PCONTROL_JOB_PENDING, STACK_BOTTOM);
+      FreeIOBuffer (&buffer);
+      return (FALSE);
 
     case PCLIENT_GOOD:
