summaryrefslogtreecommitdiff
blob: 9e134a08d374945cfcff5b238abfa50e08ffb52c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
From a737d3e3bac5bd0378f645eb675a7e4c248e2216 Mon Sep 17 00:00:00 2001
From: tildeslash <info@tildeslash.com>
Date: Tue, 27 Oct 2020 19:53:56 +0100
Subject: [PATCH] Fixed: Issue #931: The "if oes exist" file test with
 unmonitor or stop action didn't work properly.

---
 CHANGES                           | 9 +++++++--
 configure.ac                      | 2 +-
 src/validate.c                    | 3 +++
 system/packages/redhat/monit.spec | 5 ++++-
 4 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/validate.c b/src/validate.c
index 2bf818a..36aa7ef 100644
--- a/src/validate.c
+++ b/src/validate.c
@@ -1686,6 +1686,9 @@ State_Type check_file(Service_T s) {
                         Event_post(s, Event_Exist, State_Failed, l->action, "file exists");
                 }
         }
+        // Double-check the monitoring state: the "if does exist" may call unmonitor/stop, which resets the service object
+        if (s->monitor == Monitor_Not)
+                return rv;
         if (! S_ISREG(s->inf.file->mode) && ! S_ISSOCK(s->inf.file->mode)) {
                 Event_post(s, Event_Invalid, State_Failed, s->action_INVALID, "is neither a regular file nor a socket");
                 return State_Failed;