Index: trunk/Ohana/src/opihi/pcontrol/StartHost.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/StartHost.c	(revision 12840)
+++ trunk/Ohana/src/opihi/pcontrol/StartHost.c	(revision 25872)
@@ -21,21 +21,24 @@
     if (VerboseMode()) gprint (GP_ERR, "failure to start %s\n", host[0].hostname);
     gettimeofday (&now, (void *) NULL);
-    if (ZTIME(host[0].nexttry) || ZTIME(host[0].lasttry)) {
+    if (ZTIME(host[0].next_start_try) || ZTIME(host[0].last_start_try)) {
       /* reset retry period if either is zero */
       delta = RETRY_BASE;
     } else {
-      delta = 2*DTIME (host[0].nexttry, host[0].lasttry);
+      delta = MAX(1.0, 2*DTIME (host[0].next_start_try, host[0].last_start_try));
     }
-    host[0].nexttry.tv_sec  = now.tv_sec  + delta;
-    host[0].nexttry.tv_usec = now.tv_usec;
-    host[0].lasttry.tv_sec  = now.tv_sec;
-    host[0].lasttry.tv_usec = now.tv_usec;
+    host[0].next_start_try.tv_sec  = now.tv_sec  + delta;
+    host[0].next_start_try.tv_usec = now.tv_usec;
+    host[0].last_start_try.tv_sec  = now.tv_sec;
+    host[0].last_start_try.tv_usec = now.tv_usec;
     PutHost (host, PCONTROL_HOST_DOWN, STACK_BOTTOM);
     return (FALSE);
   }
-  host[0].nexttry.tv_sec  = 0;
-  host[0].nexttry.tv_usec = 0;
-  host[0].lasttry.tv_sec  = 0;
-  host[0].lasttry.tv_usec = 0;
+  host[0].next_start_try.tv_sec  = 0;
+  host[0].next_start_try.tv_usec = 0;
+  host[0].last_start_try.tv_sec  = 0;
+  host[0].last_start_try.tv_usec = 0;
+
+  // set the connection time
+  gettimeofday (&host[0].connect_time, (void *) NULL);
 
   host[0].stdin_fd  = stdio[0];
