diff --git a/src/lib66/sanitize/sanitize_fdholder.c b/src/lib66/sanitize/sanitize_fdholder.c index c27e0af23b7575caddf82ce6af5dd76c1f660141..ee561645d5cffd5e9aa6bef6755d43271d343c9c 100644 --- a/src/lib66/sanitize/sanitize_fdholder.c +++ b/src/lib66/sanitize/sanitize_fdholder.c @@ -182,7 +182,7 @@ int sanitize_fdholder(resolve_service_t *res, ss_state_t *sta, uint32_t flag, ui if (!openwritenclose_unsafe(file, list.s, list.len)) log_warnusys_return(LOG_EXIT_ZERO, "write file: ", file) ; - svc_send_fdholder(socket, "twR") ; + //svc_send_fdholder(socket, "twR") ; stralloc_free(&list) ; } diff --git a/src/lib66/sanitize/sanitize_init.c b/src/lib66/sanitize/sanitize_init.c index ad93ec2a6cb9344a329d86a82b3c4353e514057e..b3ec035b3c6f65da8998b786b9a65d89839dc6ae 100644 --- a/src/lib66/sanitize/sanitize_init.c +++ b/src/lib66/sanitize/sanitize_init.c @@ -41,6 +41,7 @@ #include <66/enum.h> #include <66/sanitize.h> #include <66/symlink.h> +#include <66/svc.h> void cleanup(struct resolve_hash_s *hash, unsigned int alen) { @@ -64,6 +65,10 @@ void cleanup(struct resolve_hash_s *hash, unsigned int alen) unlink(pres->sa.s + pres->live.scandir) ; } + + if (alen) + svc_send_fdholder(hash[0].res.sa.s + hash[0].res.live.fdholderdir, "twR") ; + errno = e ; } @@ -76,7 +81,7 @@ void sanitize_init(unsigned int *alist, unsigned int alen, graph_t *g, struct re return ; ftrigr_t fifo = FTRIGR_ZERO ; - uint32_t earlier ; + uint32_t earlier, fdh = 0 ; gid_t gid = getgid() ; int is_supervised = 0 ; unsigned int pos = 0, nsv = 0, msg[alen] ; @@ -173,6 +178,8 @@ void sanitize_init(unsigned int *alist, unsigned int alen, graph_t *g, struct re cleanup(toclean, pos) ; log_dieusys(LOG_EXIT_SYS, "create fifo: ", pres->sa.s + pres->live.eventdir) ; } + + fdh = 1 ; } if (!state_write(&sta, pres)) { @@ -183,6 +190,9 @@ void sanitize_init(unsigned int *alist, unsigned int alen, graph_t *g, struct re real[nsv++] = *hash ; } + if (!earlier && fdh && nsv) + svc_send_fdholder(real[0].res.sa.s + real[0].res.live.fdholderdir, "twR") ; + /** * scandir is already running, we need to synchronize with it * */ diff --git a/src/lib66/svc/svc_unsupervise.c b/src/lib66/svc/svc_unsupervise.c index e48f0562385b95f70a1f95fda057d7a9da90e617..850e4220c0aceaf2543fb79a7830aac5594b65c3 100644 --- a/src/lib66/svc/svc_unsupervise.c +++ b/src/lib66/svc/svc_unsupervise.c @@ -34,6 +34,8 @@ static void sanitize_it(resolve_service_t *res) sanitize_fdholder(res, &sta, STATE_FLAGS_FALSE, 0) ; + svc_send_fdholder(res->sa.s + res->live.fdholderdir, "twR") ; + state_set_flag(&sta, STATE_FLAGS_TOUNSUPERVISE, STATE_FLAGS_TRUE) ; state_set_flag(&sta, STATE_FLAGS_ISUP, STATE_FLAGS_FALSE) ;