From aebeeada3106247e74f3106a76c3cc0919aebdc7 Mon Sep 17 00:00:00 2001 From: David Young Date: Thu, 16 Apr 2020 15:18:51 -0500 Subject: When hlog_set_state() changes the state of an outlet, reset each outlet's cached state so that its state is reevaluated. --- src/hlog.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/hlog.c b/src/hlog.c index 04050e0..d2d0e51 100644 --- a/src/hlog.c +++ b/src/hlog.c @@ -273,10 +273,20 @@ hlog_impl(struct hlog_outlet *ls0, const char *fmt, ...) va_end(ap); } +static void +hlog_outlet_reset_all(void) +{ + struct hlog_outlet *ls; + + TAILQ_FOREACH(ls, &hlog_outlets, ls_next) + ls->ls_resolved = HLOG_OUTLET_S_PASS; +} + struct hlog_outlet * hlog_outlet_lookup(const char *name) { struct hlog_outlet *ls; + TAILQ_FOREACH(ls, &hlog_outlets, ls_next) { if (strcmp(ls->ls_name, name) == 0) return ls; @@ -333,6 +343,7 @@ hlog_set_state(const char *name, hlog_outlet_state_t state, bool rendezvous) TAILQ_INSERT_TAIL(&hlog_outlets, ls, ls_next); } ls->ls_state = state; + hlog_outlet_reset_all(); return 0; } -- cgit v0.12