From 23d4c3bf52e4c2b9e742688264c812d1e07a4329 Mon Sep 17 00:00:00 2001 From: obarun <eric@obarun.org> Date: Sun, 6 Aug 2023 19:41:27 +1100 Subject: [PATCH] avoid to read twice the state file --- src/lib66/sanitize/sanitize_livestate.c | 8 +++++--- src/lib66/sanitize/sanitize_scandir.c | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lib66/sanitize/sanitize_livestate.c b/src/lib66/sanitize/sanitize_livestate.c index 6d747f26..9e1f56ea 100644 --- a/src/lib66/sanitize/sanitize_livestate.c +++ b/src/lib66/sanitize/sanitize_livestate.c @@ -111,13 +111,15 @@ void sanitize_livestate(resolve_service_t *res) } else { - if (service_is(&sta, STATE_FLAGS_TOUNSUPERVISE) == STATE_FLAGS_TRUE) { + if (sta.tounsupervise == STATE_FLAGS_TRUE) { log_trace("unlink: ", ste) ; unlink_void(ste) ; - if (!state_messenger(res, STATE_FLAGS_TOUNSUPERVISE, STATE_FLAGS_FALSE)) - log_dieusys(LOG_EXIT_SYS, "send message to state of: ", name) ; + state_set_flag(&sta, STATE_FLAGS_TOUNSUPERVISE, STATE_FLAGS_FALSE) ; + + if (!state_write(&sta, res)) + log_dieusys(LOG_EXIT_SYS, "write status file of: ", name) ; } } } diff --git a/src/lib66/sanitize/sanitize_scandir.c b/src/lib66/sanitize/sanitize_scandir.c index c89e15cd..4b7680e1 100644 --- a/src/lib66/sanitize/sanitize_scandir.c +++ b/src/lib66/sanitize/sanitize_scandir.c @@ -83,6 +83,12 @@ static void compute_supervision_dir(resolve_service_t *res) int r = dir_create_parent(event, 0700) ; if (!r) log_dieusys(LOG_EXIT_SYS, "create directory: ", event) ; + /** + * + * ISSUE: All the following means writting on a possible + * ro mountpoint, so crash occurs. + * + * */ if (chown(event, -1, getegid()) < 0) log_dieusys(LOG_EXIT_SYS, "chown: ", event) ; @@ -118,7 +124,7 @@ void sanitize_scandir(resolve_service_t *res) log_dieu(LOG_EXIT_SYS, "read state file of: ", name) ; r = access(res->sa.s + res->live.scandir, F_OK) ; - if (r == -1 && service_is(&sta, STATE_FLAGS_TOINIT) == STATE_FLAGS_TRUE) { + if (r == -1 && (sta.toinit == STATE_FLAGS_TRUE || sta.isearlier == STATE_FLAGS_TRUE)) { if (res->type == TYPE_CLASSIC) scandir_scandir_to_livestate(res) ; -- GitLab