diff -urN gdnsd-3.8.0/src.ori/plugins/http_status.c gdnsd-3.8.0/src/plugins/http_status.c --- gdnsd-3.8.0/src.ori/plugins/http_status.c 2021-08-13 20:07:20.000000000 +0200 +++ gdnsd-3.8.0/src/plugins/http_status.c 2021-11-29 14:11:13.795278380 +0100 @@ -492,10 +492,13 @@ static void plugin_http_status_init_monitors(struct ev_loop* mon_loop) { for (unsigned i = 0; i < num_mons; i++) { + gdnsd_mon_state_updater(mons[i]->idx, true); + /* ev_timer* ival_watcher = &mons[i]->interval_watcher; gdnsd_assert(mons[i]->sock == -1); ev_timer_set(ival_watcher, 0, 0); ev_timer_start(mon_loop, ival_watcher); + */ } } diff -urN gdnsd-3.8.0/src.ori/plugins/mon.c gdnsd-3.8.0/src/plugins/mon.c --- gdnsd-3.8.0/src.ori/plugins/mon.c 2021-08-13 20:07:20.000000000 +0200 +++ gdnsd-3.8.0/src/plugins/mon.c 2021-11-29 14:11:13.799278383 +0100 @@ -785,8 +785,9 @@ // been demonstrated. For now, just going with pretending initial // state is stable. if (initial_round) { - gdnsd_assert(!smgr->n_failure); + //gdnsd_assert(!smgr->n_failure); gdnsd_assert(!smgr->n_success); + smgr->n_failure = smgr->type->down_thresh - 1; down = !latest; } else { // First handle basic up/down state and the counters diff -urN gdnsd-3.8.0/src.ori/plugins/tcp_connect.c gdnsd-3.8.0/src/plugins/tcp_connect.c --- gdnsd-3.8.0/src.ori/plugins/tcp_connect.c 2021-08-13 20:07:20.000000000 +0200 +++ gdnsd-3.8.0/src/plugins/tcp_connect.c 2021-11-29 14:11:13.799278383 +0100 @@ -281,10 +281,13 @@ static void plugin_tcp_connect_init_monitors(struct ev_loop* mon_loop) { for (unsigned i = 0; i < num_mons; i++) { + gdnsd_mon_state_updater(mons[i]->idx, true); +/* ev_timer* ival_watcher = &mons[i]->interval_watcher; gdnsd_assert(mons[i]->sock == -1); ev_timer_set(ival_watcher, 0, 0); ev_timer_start(mon_loop, ival_watcher); +*/ } }