monit-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[monit-dev] [monit] r212 committed - fix the MONIT_DESCRIPTION environme


From: monit
Subject: [monit-dev] [monit] r212 committed - fix the MONIT_DESCRIPTION environment variable
Date: Mon, 26 Jul 2010 19:11:11 +0000

Revision: 212
Author: martin2812
Date: Mon Jul 26 12:10:25 2010
Log: fix the MONIT_DESCRIPTION environment variable
http://code.google.com/p/monit/source/detail?r=212

Modified:
 /trunk/CHANGES.txt
 /trunk/control.c
 /trunk/event.c
 /trunk/monitor.h
 /trunk/spawn.c

=======================================
--- /trunk/CHANGES.txt  Sat Jul 24 04:27:48 2010
+++ /trunk/CHANGES.txt  Mon Jul 26 12:10:25 2010
@@ -90,6 +90,9 @@

 * Fixed RADIUS procol test. Thanks to Alan DeKok for patch.

+* Fixed MONIT_DESCRIPTION environment variable. Thanks to Marco Roeland for
+  patch.
+
 * Fixed system load average monitoring on AIX

 * Fixed compilation on AIX 6.1
=======================================
--- /trunk/control.c    Sun May  2 12:57:05 2010
+++ /trunk/control.c    Mon Jul 26 12:10:25 2010
@@ -334,7 +334,7 @@

   if (s->start && (s->type!=TYPE_PROCESS || !Util_isProcessRunning(s))) {
     LogInfo("'%s' start: %s\n", s->name, s->start->arg[0]);
-    spawn(s, s->start, "Started");
+    spawn(s, s->start, NULL);
/* We only wait for a process type, other service types does not have a pid file to watch */
     if (s->type == TYPE_PROCESS)
       wait_start(s);
@@ -364,7 +364,7 @@

   if (s->stop && (s->type!=TYPE_PROCESS || Util_isProcessRunning(s))) {
     LogInfo("'%s' stop: %s\n", s->name, s->stop->arg[0]);
-    spawn(s, s->stop, "Stopped");
+    spawn(s, s->stop, NULL);
     if (s->type == TYPE_PROCESS) {
       /* Only wait for process service types */
       if (!wait_stop(s))
=======================================
--- /trunk/event.c      Mon Jul 26 11:37:55 2010
+++ /trunk/event.c      Mon Jul 26 12:10:25 2010
@@ -709,7 +709,7 @@
     return;
   } else if (A->id == ACTION_EXEC) {
     LogInfo("'%s' exec: %s\n", s->name, A->exec->arg[0]);
-    spawn(s, A->exec, Event_get_description(E));
+    spawn(s, A->exec, E);
     return;
   } else {
if (s->actionratelist && (A->id == ACTION_START || A->id == ACTION_RESTART))
=======================================
--- /trunk/monitor.h    Mon Jul 26 07:54:50 2010
+++ /trunk/monitor.h    Mon Jul 26 12:10:25 2010
@@ -907,7 +907,7 @@
 int   control_service_daemon(const char *, const char *);
 void  setup_dependants();
 void  reset_depend();
-void  spawn(Service_T, Command_T, const char *);
+void  spawn(Service_T, Command_T, Event_T);
 int   status(char *);
 int   log_init();
 void  LogEmergency(const char *, ...);
=======================================
--- /trunk/spawn.c      Fri Jan  8 03:20:43 2010
+++ /trunk/spawn.c      Mon Jul 26 12:10:25 2010
@@ -114,7 +114,7 @@
 static void put_monit_environment(Environment_T e);
 static void free_monit_environment(Environment_T *e);
 static void push_monit_environment(const char *env, Environment_T *list);
-static void set_monit_environment(Service_T s, const char *event, Environment_T *e); +static void set_monit_environment(Service_T s, Command_T C, Event_T event, Environment_T *e);


/* ------------------------------------------------------------------ Public */
@@ -125,11 +125,9 @@
  * thread in control.c should notice this and send an alert message.
  * @param P A Service object
  * @param C A Command object
- * @param E An optional event string, specifying why this function was
- * called. May be NULL.
+ * @param E An optional event object. May be NULL.
  */
-void spawn(Service_T S, Command_T C, const char *E) {
-
+void spawn(Service_T S, Command_T C, Event_T E) {
   pid_t pid;
   sigset_t mask;
   sigset_t save;
@@ -152,7 +150,7 @@
   sigaddset(&mask, SIGCHLD);
   pthread_sigmask(SIG_BLOCK, &mask, &save);

-  set_monit_environment(S, E, &environment);
+  set_monit_environment(S, C, E, &environment);

   pid= fork();
   if(pid < 0) {
@@ -259,10 +257,7 @@
  * Setup the environment with special MONIT_xxx variables. The program
  * executed may use such variable for various purposes.
  */
-static void set_monit_environment(Service_T s,
-                                 const char *event,
-                                 Environment_T *e) {
-
+static void set_monit_environment(Service_T s, Command_T C, Event_T event, Environment_T *e) {
   char buf[STRLEN];
   char date[STRLEN];

@@ -277,13 +272,11 @@
   snprintf(buf, STRLEN, "MONIT_HOST=%s", Run.localhostname);
   push_monit_environment(buf, e);

-  snprintf(buf, STRLEN, "MONIT_EVENT=%s", event?event:"No Event");
+ snprintf(buf, STRLEN, "MONIT_EVENT=%s", event ? Event_get_description(event) : C == s->start ? "Started" : C == s->stop ? "Stopped" : "No Event");
   push_monit_environment(buf, e);

-  if (s->eventlist) {
-    snprintf(buf, STRLEN, "MONIT_DESCRIPTION=%s", s->eventlist->message);
-    push_monit_environment(buf, e);
-  }
+ snprintf(buf, STRLEN, "MONIT_DESCRIPTION=%s", event ? Event_get_message(event) : C == s->start ? "Started" : C == s->stop ? "Stopped" : "No Event");
+  push_monit_environment(buf, e);

   if (s->type == TYPE_PROCESS) {
snprintf(buf, STRLEN, "MONIT_PROCESS_PID=%d", Util_isProcessRunning(s));



reply via email to

[Prev in Thread] Current Thread [Next in Thread]