diff options
-rw-r--r-- | hbeat.c | 48 |
1 files changed, 28 insertions, 20 deletions
@@ -96,8 +96,33 @@ hbeat(hbeat_t hbh) hbeat = btime(hbeatp->host); current_time = time(NULL); - if (!hbeat) { - switch (hbeatp->rhost_state) { + if (hbeat) { switch(hbeatp->rhost_state) { + /* Remote Host is Responding */ + case HOST_REBOOT: + case HOST_TIMEOUT: + retval = 0; + break; + case HOST_QUIET: + hbeatp->rhost_state = HOST_ALIVE; + hbeatp->start_quiet_time = 0; + case HOST_ALIVE: + if (hbeatp->last_rhost_btime == 0) { + hbeatp->last_rhost_btime = hbeat; + retval = 1; + } else if (abs(hbeat - hbeatp->last_rhost_btime) > 5) { + hbeatp->rhost_state = HOST_REBOOT; + retval = 0; + } else { + hbeatp->last_rhost_btime = hbeat; + retval = 1; + } + break; + + case HOST_HBEAT_DISABLED: + retval = 1; + break; + }} else { switch (hbeatp->rhost_state) { + /* Remote Host is NOT Responding */ case HOST_ALIVE: hbeatp->rhost_state = HOST_QUIET; hbeatp->start_quiet_time = time(NULL); @@ -122,24 +147,7 @@ hbeat(hbeat_t hbh) case HOST_HBEAT_DISABLED: retval = 1; break; - } - } - - if (hbeat) { - if (hbeatp->rhost_state == HOST_REBOOT) { - retval = 0; - } else { - hbeatp->last_rhost_btime = hbeat; - hbeatp->rhost_state = HOST_ALIVE; - hbeatp->start_quiet_time = 0; - retval = 1; - - if (abs(hbeat - hbeatp->last_rhost_btime) > 5) { - hbeatp->rhost_state = HOST_REBOOT; - retval = 0; - } - } - } + }} return retval; } |