[MINOR] stats: report maint state for tracking servers too
This is to avoid confusing a real server failure and a tracking server
which is marked down because the tracked server was switched to MAINT.
diff --git a/src/dumpstats.c b/src/dumpstats.c
index 8900636..35af8c1 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -1697,7 +1697,7 @@
else
sv_state = 0; /* DOWN */
- if ((sv_state == 0) && (s->data_ctx.stats.flags & STAT_HIDE_DOWN)) {
+ if (((sv_state == 0) || (sv->state & SRV_MAINTAIN)) && (s->data_ctx.stats.flags & STAT_HIDE_DOWN)) {
/* do not report servers which are DOWN */
s->data_ctx.stats.sv = sv->next;
continue;
@@ -1708,7 +1708,7 @@
"UP %d/%d ↓", "UP",
"NOLB %d/%d ↓", "NOLB",
"<i>no check</i>" };
- if (sv->state & SRV_MAINTAIN) {
+ if ((sv->state & SRV_MAINTAIN) || (svs->state & SRV_MAINTAIN)) {
chunk_printf(&msg,
/* name */
"<tr class=\"maintain\"><td class=ac"
@@ -1806,9 +1806,14 @@
human_time(now.tv_sec - sv->last_change, 1));
chunk_printf(&msg, "MAINT");
}
+ else if (svs != sv && svs->state & SRV_MAINTAIN) {
+ chunk_printf(&msg, "%s ",
+ human_time(now.tv_sec - svs->last_change, 1));
+ chunk_printf(&msg, "MAINT(via)");
+ }
else if (svs->state & SRV_CHECKED) {
chunk_printf(&msg, "%s ",
- human_time(now.tv_sec - sv->last_change, 1));
+ human_time(now.tv_sec - svs->last_change, 1));
chunk_printf(&msg,
srv_hlt_st[sv_state],
@@ -1916,7 +1921,11 @@
/* status */
if (sv->state & SRV_MAINTAIN) {
chunk_printf(&msg, "MAINT,");
- } else {
+ }
+ else if (svs != sv && svs->state & SRV_MAINTAIN) {
+ chunk_printf(&msg, "MAINT(via),");
+ }
+ else {
chunk_printf(&msg,
srv_hlt_st[sv_state],
(svs->state & SRV_RUNNING) ? (svs->health - svs->rise + 1) : (svs->health),