Index: trunk/Ohana/src/opihi/pcontrol/CheckHost.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/CheckHost.c	(revision 4762)
+++ trunk/Ohana/src/opihi/pcontrol/CheckHost.c	(revision 4763)
@@ -13,19 +13,11 @@
     case 0:
       if (VerboseMode()) fprintf (stderr, "host %s is down\n", host[0].hostname);
-
-      /* if host has a job, job is dead, push to Pending */
-      if (host[0].stack == PCONTROL_HOST_BUSY) {
-	job = (Job *) host[0].job;
-	if (job != NULL) {
-	  N = FindJob (job[0].JobID, PCONTROL_JOB_BUSY);
-	  if (N < 0) {
-	    fprintf (stderr, "programming error: job is not found in BUSY list\n");
-	    exit (2);
-	  }
-	  job[0].host = NULL; /* unlink host & job */
-	  PutJob (job, PCONTROL_JOB_PENDING, STACK_BOTTOM);
-	}
+      /* if host has a job, job is dead, return to Pending */
+      job = (Job *) host[0].job;
+      if (job != NULL) {
+	UnlinkJobAndHost (job);
+	PutJob (job, PCONTROL_JOB_PENDING, STACK_BOTTOM);
       }
-      host[0].job = NULL;
+      HarvestHost (host[0].pid);
       PutHost (host, PCONTROL_HOST_DOWN, STACK_BOTTOM);
       FreeIOBuffer (&buffer);
