[hobbit] hobbitd_alert crashes

Henrik Stoerner henrik at hswn.dk
Fri Jun 2 13:22:48 CEST 2006


On Fri, Jun 02, 2006 at 08:19:10AM +0200, Dominique Frise wrote:

> Looking at the event log, I noticed that the 3 times that hobbitd_alert 
> crashed, it was trying to send to an IGNORE recipient (not always the same).

Thanks, it was easy to reproduce the problem once I tried some IGNORE
rules. I believe this patch should solve the problem.


Regards,
Henrik

-------------- next part --------------
--- hobbitd/do_alert.c	2006/05/28 15:16:51	1.91
+++ hobbitd/do_alert.c	2006/06/02 11:12:17
@@ -88,6 +88,8 @@
 	char *id, *method = "unknown";
 	repeat_t *walk;
 
+	if (recip->method == M_IGNORE) return NULL;
+
 	switch (recip->method) {
 	  case M_MAIL: method = "mail"; break;
 	  case M_SCRIPT: method = "script"; break;
@@ -325,6 +327,8 @@
 			 * might create here is NOT used later on.
 			 */
 			rpt = find_repeatinfo(alert, recip, 1);
+			if (!rpt) continue;	/* Happens for e.g. M_IGNORE recipients */
+
 			dprintf("  repeat %s at %d\n", rpt->recipid, rpt->nextalert);
 			if (rpt->nextalert > now) {
 				traceprintf("Recipient '%s' dropped, next alert due at %d > %d\n",
--- lib/loadalerts.c	2006/05/31 08:50:03	1.13
+++ lib/loadalerts.c	2006/06/02 11:19:36
@@ -1092,7 +1092,9 @@
 		     (recip->criteria && (recip->criteria->sendnotice == SR_WANTED)) ) notice = 1;
 
 		*codes = '\0';
-		if (recip->method == M_IGNORE) strcat(codes, "I");
+		if (recip->method == M_IGNORE) {
+			recip->recipient = "-- ignored --";
+		}
 		if (recip->noalerts) { if (strlen(codes)) strcat(codes, ",A"); else strcat(codes, "-A"); }
 		if (recovered && !recip->noalerts) { if (strlen(codes)) strcat(codes, ",R"); else strcat(codes, "R"); }
 		if (notice) { if (strlen(codes)) strcat(codes, ",N"); else strcat(codes, "N"); }


More information about the Xymon mailing list