Index: trunk/Ohana/src/opihi/pcontrol/HostOps.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 16472)
+++ trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 17475)
@@ -1,13 +1,15 @@
 # include "pcontrol.h"
 
-Stack *HostPool_Idle;
-Stack *HostPool_Busy;
-Stack *HostPool_Done;
-Stack *HostPool_Down;
-Stack *HostPool_Off;
+Stack *HostPool_Idle; // these hosts are waiting for something to do
+Stack *HostPool_Busy; // these hosts are working
+Stack *HostPool_Resp; // these hosts are trying to respond
+Stack *HostPool_Done; // these hosts have finished a job
+Stack *HostPool_Down; // these hosts are not responding
+Stack *HostPool_Off;  // these hosts are off
 
 void InitHostStacks () {
   HostPool_Idle = InitStack ();
   HostPool_Busy = InitStack ();
+  HostPool_Resp = InitStack ();
   HostPool_Done = InitStack ();
   HostPool_Down = InitStack ();
@@ -26,4 +28,5 @@
   FreeHostStack (HostPool_Idle);
   FreeHostStack (HostPool_Busy);
+  FreeHostStack (HostPool_Resp);
   FreeHostStack (HostPool_Done);
   FreeHostStack (HostPool_Down);
@@ -35,4 +38,5 @@
     case PCONTROL_HOST_IDLE: return ("IDLE");
     case PCONTROL_HOST_DOWN: return ("DOWN");
+    case PCONTROL_HOST_RESP: return ("RESP");
     case PCONTROL_HOST_DONE: return ("DONE");
     case PCONTROL_HOST_BUSY: return ("BUSY");
@@ -48,4 +52,5 @@
     case PCONTROL_HOST_IDLE: return (HostPool_Idle);
     case PCONTROL_HOST_DOWN: return (HostPool_Down);
+    case PCONTROL_HOST_RESP: return (HostPool_Resp);
     case PCONTROL_HOST_DONE: return (HostPool_Done);
     case PCONTROL_HOST_BUSY: return (HostPool_Busy);
@@ -60,4 +65,5 @@
   if (!strcasecmp (name, "idle")) return (HostPool_Idle);
   if (!strcasecmp (name, "down")) return (HostPool_Down);
+  if (!strcasecmp (name, "resp")) return (HostPool_Resp);
   if (!strcasecmp (name, "done")) return (HostPool_Done);
   if (!strcasecmp (name, "busy")) return (HostPool_Busy);
@@ -94,4 +100,8 @@
   if (host != NULL) return (host);
 
+  *StackID = PCONTROL_HOST_RESP;
+  host = PullHostFromStackByID (*StackID, HostID);
+  if (host != NULL) return (host);
+
   *StackID = PCONTROL_HOST_DONE;
   host = PullHostFromStackByID (*StackID, HostID);
@@ -120,4 +130,8 @@
 
   *StackID = PCONTROL_HOST_DOWN;
+  host = PullHostFromStackByName (*StackID, name);
+  if (host != NULL) return (host);
+
+  *StackID = PCONTROL_HOST_RESP;
   host = PullHostFromStackByName (*StackID, name);
   if (host != NULL) return (host);
@@ -180,4 +194,8 @@
   host[0].nexttry.tv_usec = 0;
 
+  InitIOBuffer (&host[0].comms_buffer, 0x100);
+  host[0].response_state = PCONTROL_RESP_NONE;
+  host[0].response = NULL;
+
   host[0].markoff  = FALSE;
   host[0].job      = NULL;
@@ -187,4 +205,5 @@
 
 void DelHost (Host *host) {
+  FreeIOBuffer (&host[0].comms_buffer);
   FREE (host[0].hostname);
   FREE (host[0].job);
