Henrik Stoerner wrote:
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
------------------------------------------------------------------------
--- 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"); }
------------------------------------------------------------------------
To unsubscribe from the hobbit list, send an e-mail to hobbit-unsubscribe at hswn.dk
We did not have any new crash since we applied the patches :-) Thank you. Dominique UNIL - University of Lausanne