state = "dead";
} else if (home->state == HOME_STATE_UNKNOWN) {
- state = "unknown";
+ time_t now = time(NULL);
+
+ /*
+ * We've recently received a packet, so
+ * the home server seems to be alive.
+ *
+ * The *reported* state changes because
+ * the internal state machine NEEDS THE
+ * RIGHT STATE. However, reporting that
+ * to the admin will confuse him. So...
+ * we lie. Yes, that dress doesn't make
+ * you look fat.
+ */
+ if ((home->last_packet_recv + home->ping_interval) >= now) {
+ state = "alive";
+ } else {
+ state = "unknown";
+ }
} else continue;