[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