From: Ethan G. <ega...@us...> - 2007-09-13 18:19:36
|
Update of /cvsroot/nagios/nagios/base In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv5815/base Modified Files: commands.c notifications.c utils.c Log Message: Added custom notifications :-) Index: commands.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/commands.c,v retrieving revision 1.91 retrieving revision 1.92 diff -C2 -d -r1.91 -r1.92 *** commands.c 11 Sep 2007 22:16:27 -0000 1.91 --- commands.c 13 Sep 2007 18:19:35 -0000 1.92 *************** *** 4,8 **** * * Copyright (c) 1999-2007 Ethan Galstad (na...@na...) ! * Last Modified: 09-11-2007 * * License: --- 4,8 ---- * * Copyright (c) 1999-2007 Ethan Galstad (na...@na...) ! * Last Modified: 09-12-2007 * * License: *************** *** 463,466 **** --- 463,469 ---- command_type=CMD_CHANGE_CUSTOM_HOST_VAR; + else if (!strcmp(command_id,"SEND_CUSTOM_HOST_NOTIFICATION")) + command_type=CMD_SEND_CUSTOM_HOST_NOTIFICATION; + /************************************/ *************** *** 592,595 **** --- 595,601 ---- command_type=CMD_CHANGE_CUSTOM_CONTACT_VAR; + else if (!strcmp(command_id,"SEND_CUSTOM_SVC_NOTIFICATION")) + command_type=CMD_SEND_CUSTOM_SVC_NOTIFICATION; + /***************************************/ *************** *** 892,895 **** --- 898,902 ---- case CMD_STOP_OBSESSING_OVER_HOST: case CMD_SET_HOST_NOTIFICATION_NUMBER: + case CMD_SEND_CUSTOM_HOST_NOTIFICATION: process_host_command(cmd,entry_time,args); break; *************** *** 933,936 **** --- 940,944 ---- case CMD_STOP_OBSESSING_OVER_SVC: case CMD_SET_SVC_NOTIFICATION_NUMBER: + case CMD_SEND_CUSTOM_SVC_NOTIFICATION: process_service_command(cmd,entry_time,args); break; *************** *** 1122,1127 **** --- 1130,1138 ---- servicesmember *temp_servicesmember=NULL; char *str=NULL; + char *buf[2]={NULL,NULL}; int intval=0; + printf("ARGS: %s\n",args); + /* get the host name */ if((host_name=my_strtok(args,";"))==NULL) *************** *** 1227,1230 **** --- 1238,1254 ---- break; + case CMD_SEND_CUSTOM_HOST_NOTIFICATION: + if((str=my_strtok(NULL,";"))) + intval=atoi(str); + str=my_strtok(NULL,";"); + if(str) + buf[0]=strdup(str); + str=my_strtok(NULL,";"); + if(str) + buf[1]=strdup(str); + if(buf[0] && buf[1]) + host_notification(temp_host,NOTIFICATION_CUSTOM,buf[0],buf[1],intval); + break; + default: break; *************** *** 1338,1341 **** --- 1362,1366 ---- service *temp_service=NULL; char *str=NULL; + char *buf[2]={NULL,NULL}; int intval=0; *************** *** 1409,1412 **** --- 1434,1450 ---- break; + case CMD_SEND_CUSTOM_SVC_NOTIFICATION: + if((str=my_strtok(NULL,";"))) + intval=atoi(str); + str=my_strtok(NULL,";"); + if(str) + buf[0]=strdup(str); + str=my_strtok(NULL,";"); + if(str) + buf[1]=strdup(str); + if(buf[0] && buf[1]) + service_notification(temp_service,NOTIFICATION_CUSTOM,buf[0],buf[1],intval); + break; + default: break; Index: notifications.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/notifications.c,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** notifications.c 11 Sep 2007 22:16:28 -0000 1.62 --- notifications.c 13 Sep 2007 18:19:35 -0000 1.63 *************** *** 4,8 **** * * Copyright (c) 1999-2007 Ethan Galstad (na...@na...) ! * Last Modified: 09-11-2007 * * License: --- 4,8 ---- * * Copyright (c) 1999-2007 Ethan Galstad (na...@na...) ! * Last Modified: 09-13-2007 * * License: *************** *** 67,70 **** --- 67,71 ---- int result=OK; int contacts_notified=0; + int increment_notification_number=FALSE; log_debug_info(DEBUGL_FUNCTIONS,0,"service_notification()\n"); *************** *** 77,81 **** gettimeofday(&start_time,NULL); ! log_debug_info(DEBUGL_NOTIFICATIONS,0,"** Service Notification Attempt ** Host: '%s', Service: '%s', Type: %d, Current State: %d, Last Notification: %s",svc->host_name,svc->description,type,svc->current_state,ctime(&svc->last_notification)); /* if we couldn't find the host, return an error */ --- 78,82 ---- gettimeofday(&start_time,NULL); ! log_debug_info(DEBUGL_NOTIFICATIONS,0,"** Service Notification Attempt ** Host: '%s', Service: '%s', Type: %d, Options: %d, Current State: %d, Last Notification: %s",svc->host_name,svc->description,type,options,svc->current_state,ctime(&svc->last_notification)); /* if we couldn't find the host, return an error */ *************** *** 93,104 **** log_debug_info(DEBUGL_NOTIFICATIONS,0,"Notification viability test passed.\n"); ! /* if this is just a normal notification... */ ! if(type==NOTIFICATION_NORMAL){ ! ! /* increase the current notification number */ svc->current_notification_number++; ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Current notification number: %d\n",svc->current_notification_number); ! } /* save and increase the current notification id */ --- 94,104 ---- log_debug_info(DEBUGL_NOTIFICATIONS,0,"Notification viability test passed.\n"); ! /* should the notification number be increased? */ ! if(type==NOTIFICATION_NORMAL || (options & NOTIFICATION_OPTION_INCREMENT)){ svc->current_notification_number++; + increment_notification_number=TRUE; + } ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Current notification number: %d (%s)\n",svc->current_notification_number,(increment_notification_number==TRUE)?"incremented":"unchanged"); /* save and increase the current notification id */ *************** *** 139,143 **** } ! /* if this is an acknowledgement, get the acknowledgement macros */ if(type==NOTIFICATION_ACKNOWLEDGEMENT){ --- 139,158 ---- } ! /* get author and comment macros */ ! my_free((void **)¯o_x[MACRO_NOTIFICATIONAUTHOR]); ! if(not_author) ! macro_x[MACRO_NOTIFICATIONAUTHOR]=(char *)strdup(not_author); ! my_free((void **)¯o_x[MACRO_NOTIFICATIONAUTHORNAME]); ! my_free((void **)¯o_x[MACRO_NOTIFICATIONAUTHORALIAS]); ! if(temp_contact!=NULL){ ! macro_x[MACRO_NOTIFICATIONAUTHORNAME]=(char *)strdup(temp_contact->name); ! macro_x[MACRO_NOTIFICATIONAUTHORALIAS]=(char *)strdup(temp_contact->alias); ! } ! my_free((void **)macro_x[MACRO_NOTIFICATIONCOMMENT]); ! if(not_data) ! macro_x[MACRO_NOTIFICATIONCOMMENT]=(char *)strdup(not_data); ! ! /* NOTE: these macros are deprecated and will likely disappear in Nagios 4.x */ ! /* if this is an acknowledgement, get author and comment macros */ if(type==NOTIFICATION_ACKNOWLEDGEMENT){ *************** *** 158,180 **** } - /* if this is a downtime notifications, get the downtime macros */ - else if(type==NOTIFICATION_DOWNTIMESTART || type==NOTIFICATION_DOWNTIMEEND || type==NOTIFICATION_DOWNTIMECANCELLED){ - - my_free((void **)¯o_x[MACRO_SERVICEDOWNTIMEAUTHOR]); - if(not_author) - macro_x[MACRO_SERVICEDOWNTIMEAUTHOR]=(char *)strdup(not_author); - - my_free((void **)macro_x[MACRO_SERVICEDOWNTIMECOMMENT]); - if(not_data) - macro_x[MACRO_SERVICEDOWNTIMECOMMENT]=(char *)strdup(not_data); - - my_free((void **)¯o_x[MACRO_SERVICEDOWNTIMEAUTHORNAME]); - my_free((void **)¯o_x[MACRO_SERVICEDOWNTIMEAUTHORALIAS]); - if(temp_contact!=NULL){ - macro_x[MACRO_SERVICEDOWNTIMEAUTHORNAME]=(char *)strdup(temp_contact->name); - macro_x[MACRO_SERVICEDOWNTIMEAUTHORALIAS]=(char *)strdup(temp_contact->alias); - } - } - /* set the notification type macro */ my_free((void **)¯o_x[MACRO_NOTIFICATIONTYPE]); --- 173,176 ---- *************** *** 253,257 **** /* we didn't end up notifying anyone, so adjust current notification number */ ! else svc->current_notification_number--; } --- 249,253 ---- /* we didn't end up notifying anyone, so adjust current notification number */ ! else if(increment_notification_number==TRUE) svc->current_notification_number--; } *************** *** 264,268 **** /* readjust current notification number, since one didn't go out */ ! if(type==NOTIFICATION_NORMAL) svc->current_notification_number--; --- 260,264 ---- /* readjust current notification number, since one didn't go out */ ! if(increment_notification_number==TRUE) svc->current_notification_number--; *************** *** 305,309 **** /* are notifications enabled? */ if(enable_notifications==FALSE){ ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Notifications are disabled, so service notifications (problems and acknowledments) will not be sent out.\n"); return ERROR; } --- 301,305 ---- /* are notifications enabled? */ if(enable_notifications==FALSE){ ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Notifications are disabled, so service notifications will not be sent out.\n"); return ERROR; } *************** *** 350,353 **** --- 346,358 ---- + /*********************************************/ + /*** SPECIAL CASE FOR CUSTOM NOTIFICATIONS ***/ + /*********************************************/ + + /* custom notifications are good to go at this point... */ + if(type==NOTIFICATION_CUSTOM) + return OK; + + /****************************************/ /*** SPECIAL CASE FOR ACKNOWLEGEMENTS ***/ *************** *** 545,548 **** --- 550,562 ---- } + /*********************************************/ + /*** SPECIAL CASE FOR CUSTOM NOTIFICATIONS ***/ + /*********************************************/ + + /* custom notifications are good to go at this point... */ + if(type==NOTIFICATION_CUSTOM) + return OK; + + /****************************************/ /*** SPECIAL CASE FOR FLAPPING ALERTS ***/ *************** *** 683,688 **** if(log_notifications==TRUE){ switch(type){ case NOTIFICATION_ACKNOWLEDGEMENT: ! asprintf(&temp_buffer,"SERVICE NOTIFICATION: %s;%s;%s;ACKNOWLEDGEMENT (%s);%s;%s;%s;%s\n",cntct->name,svc->host_name,svc->description,macro_x[MACRO_SERVICESTATE],command_name_ptr,macro_x[MACRO_SERVICEOUTPUT],macro_x[MACRO_SERVICEACKAUTHOR],macro_x[MACRO_SERVICEACKCOMMENT]); break; case NOTIFICATION_FLAPPINGSTART: --- 697,705 ---- if(log_notifications==TRUE){ switch(type){ + case NOTIFICATION_CUSTOM: + asprintf(&temp_buffer,"SERVICE NOTIFICATION: %s;%s;%s;CUSTOM (%s);%s;%s;%s;%s\n",cntct->name,svc->host_name,svc->description,macro_x[MACRO_SERVICESTATE],command_name_ptr,macro_x[MACRO_SERVICEOUTPUT],macro_x[MACRO_NOTIFICATIONAUTHOR],macro_x[MACRO_NOTIFICATIONCOMMENT]); + break; case NOTIFICATION_ACKNOWLEDGEMENT: ! asprintf(&temp_buffer,"SERVICE NOTIFICATION: %s;%s;%s;ACKNOWLEDGEMENT (%s);%s;%s;%s;%s\n",cntct->name,svc->host_name,svc->description,macro_x[MACRO_SERVICESTATE],command_name_ptr,macro_x[MACRO_SERVICEOUTPUT],macro_x[MACRO_NOTIFICATIONAUTHOR],macro_x[MACRO_NOTIFICATIONCOMMENT]); break; case NOTIFICATION_FLAPPINGSTART: *************** *** 752,756 **** /* checks to see if a service escalation entry is a match for the current service notification */ ! int is_valid_escalation_for_service_notification(service *svc, serviceescalation *se){ int notification_number=0; time_t current_time=0L; --- 769,773 ---- /* checks to see if a service escalation entry is a match for the current service notification */ ! int is_valid_escalation_for_service_notification(service *svc, serviceescalation *se, int options){ int notification_number=0; time_t current_time=0L; *************** *** 773,776 **** --- 790,798 ---- return FALSE; + /*** EXCEPTION ***/ + /* broadcast options go to everyone, so this escalation is valid */ + if(options & NOTIFICATION_OPTION_BROADCAST) + return TRUE; + /* skip this escalation if it happens later */ if(se->first_notification > notification_number) *************** *** 809,813 **** /* we found a matching entry, so escalate this notification! */ ! if(is_valid_escalation_for_service_notification(svc,temp_se)==TRUE){ log_debug_info(DEBUGL_NOTIFICATIONS,1,"Service notification WILL be escalated.\n"); return TRUE; --- 831,835 ---- /* we found a matching entry, so escalate this notification! */ ! if(is_valid_escalation_for_service_notification(svc,temp_se,NOTIFICATION_OPTION_NONE)==TRUE){ log_debug_info(DEBUGL_NOTIFICATIONS,1,"Service notification WILL be escalated.\n"); return TRUE; *************** *** 842,845 **** --- 864,870 ---- asprintf(¯o_x[MACRO_NOTIFICATIONISESCALATED],"%d",escalate_notification); + if(options & NOTIFICATION_OPTION_BROADCAST) + log_debug_info(DEBUGL_NOTIFICATIONS,1,"This notification will be BROADCAST to all (escalated and normal) contacts...\n"); + /* use escalated contacts for this notification */ if(escalate_notification==TRUE || (options & NOTIFICATION_OPTION_BROADCAST)){ *************** *** 851,855 **** /* skip this entry if it isn't appropriate */ ! if(is_valid_escalation_for_service_notification(svc,temp_se)==FALSE) continue; --- 876,880 ---- /* skip this entry if it isn't appropriate */ ! if(is_valid_escalation_for_service_notification(svc,temp_se,options)==FALSE) continue; *************** *** 926,929 **** --- 951,955 ---- int result=OK; int contacts_notified=0; + int increment_notification_number=FALSE; /* clear volatile macros */ *************** *** 934,938 **** gettimeofday(&start_time,NULL); ! log_debug_info(DEBUGL_NOTIFICATIONS,0,"** Host Notification Attempt ** Host: '%s', Type: %d, Current State: %d, Last Notification: %s",hst->name,type,hst->current_state,ctime(&hst->last_host_notification)); --- 960,964 ---- gettimeofday(&start_time,NULL); ! log_debug_info(DEBUGL_NOTIFICATIONS,0,"** Host Notification Attempt ** Host: '%s', Type: %d, Options: %d, Current State: %d, Last Notification: %s",hst->name,type,options,hst->current_state,ctime(&hst->last_host_notification)); *************** *** 945,956 **** log_debug_info(DEBUGL_NOTIFICATIONS,0,"Notification viability test passed.\n"); ! /* if this is just a normal notification... */ ! if(type==NOTIFICATION_NORMAL){ ! ! /* increment the current notification number */ hst->current_notification_number++; ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Current notification number: %d\n",hst->current_notification_number); ! } /* save and increase the current notification id */ --- 971,981 ---- log_debug_info(DEBUGL_NOTIFICATIONS,0,"Notification viability test passed.\n"); ! /* should the notification number be increased? */ ! if(type==NOTIFICATION_NORMAL || (options & NOTIFICATION_OPTION_INCREMENT)){ hst->current_notification_number++; + increment_notification_number=TRUE; + } ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Current notification number: %d (%s)\n",hst->current_notification_number,(increment_notification_number==TRUE)?"incremented":"unchanged"); /* save and increase the current notification id */ *************** *** 990,994 **** } ! /* if this is an acknowledgement, get the acknowledgement macros */ if(type==NOTIFICATION_ACKNOWLEDGEMENT){ --- 1015,1034 ---- } ! /* get author and comment macros */ ! my_free((void **)¯o_x[MACRO_NOTIFICATIONAUTHOR]); ! if(not_author) ! macro_x[MACRO_NOTIFICATIONAUTHOR]=(char *)strdup(not_author); ! my_free((void **)¯o_x[MACRO_NOTIFICATIONAUTHORNAME]); ! my_free((void **)¯o_x[MACRO_NOTIFICATIONAUTHORALIAS]); ! if(temp_contact!=NULL){ ! macro_x[MACRO_NOTIFICATIONAUTHORNAME]=(char *)strdup(temp_contact->name); ! macro_x[MACRO_NOTIFICATIONAUTHORALIAS]=(char *)strdup(temp_contact->alias); ! } ! my_free((void **)macro_x[MACRO_NOTIFICATIONCOMMENT]); ! if(not_data) ! macro_x[MACRO_NOTIFICATIONCOMMENT]=(char *)strdup(not_data); ! ! /* NOTE: these macros are deprecated and will likely disappear in Nagios 4.x */ ! /* if this is an acknowledgement, get author and comment macros */ if(type==NOTIFICATION_ACKNOWLEDGEMENT){ *************** *** 1009,1031 **** } - /* if this is a downtime notifications, get the downtime macros */ - else if(type==NOTIFICATION_DOWNTIMESTART || type==NOTIFICATION_DOWNTIMEEND || type==NOTIFICATION_DOWNTIMECANCELLED){ - - my_free((void **)¯o_x[MACRO_HOSTDOWNTIMEAUTHOR]); - if(not_author) - macro_x[MACRO_HOSTDOWNTIMEAUTHOR]=(char *)strdup(not_author); - - my_free((void **)macro_x[MACRO_HOSTDOWNTIMECOMMENT]); - if(not_data) - macro_x[MACRO_HOSTDOWNTIMECOMMENT]=(char *)strdup(not_data); - - my_free((void **)¯o_x[MACRO_HOSTDOWNTIMEAUTHORNAME]); - my_free((void **)¯o_x[MACRO_HOSTDOWNTIMEAUTHORALIAS]); - if(temp_contact!=NULL){ - macro_x[MACRO_HOSTDOWNTIMEAUTHORNAME]=(char *)strdup(temp_contact->name); - macro_x[MACRO_HOSTDOWNTIMEAUTHORALIAS]=(char *)strdup(temp_contact->alias); - } - } - /* set the notification type macro */ my_free((void **)¯o_x[MACRO_NOTIFICATIONTYPE]); --- 1049,1052 ---- *************** *** 1102,1106 **** /* we didn't end up notifying anyone, so adjust current notification number */ ! else hst->current_notification_number--; } --- 1123,1127 ---- /* we didn't end up notifying anyone, so adjust current notification number */ ! else if(increment_notification_number==TRUE) hst->current_notification_number--; } *************** *** 1113,1117 **** /* adjust notification number, since no notification actually went out */ ! if(type==NOTIFICATION_NORMAL) hst->current_notification_number--; --- 1134,1138 ---- /* adjust notification number, since no notification actually went out */ ! if(increment_notification_number==TRUE) hst->current_notification_number--; *************** *** 1153,1157 **** /* are notifications enabled? */ if(enable_notifications==FALSE){ ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Notifications are disabled, so host notifications (problems or acknowledgements) will not be sent out.\n"); return ERROR; } --- 1174,1178 ---- /* are notifications enabled? */ if(enable_notifications==FALSE){ ! log_debug_info(DEBUGL_NOTIFICATIONS,1,"Notifications are disabled, so host notifications will not be sent out.\n"); return ERROR; } *************** *** 1188,1191 **** --- 1209,1221 ---- + /*********************************************/ + /*** SPECIAL CASE FOR CUSTOM NOTIFICATIONS ***/ + /*********************************************/ + + /* custom notifications are good to go at this point... */ + if(type==NOTIFICATION_CUSTOM) + return OK; + + /****************************************/ /*** SPECIAL CASE FOR ACKNOWLEGEMENTS ***/ *************** *** 1364,1367 **** --- 1394,1406 ---- + /*********************************************/ + /*** SPECIAL CASE FOR CUSTOM NOTIFICATIONS ***/ + /*********************************************/ + + /* custom notifications are good to go at this point... */ + if(type==NOTIFICATION_CUSTOM) + return OK; + + /****************************************/ /*** SPECIAL CASE FOR FLAPPING ALERTS ***/ *************** *** 1502,1507 **** if(log_notifications==TRUE){ switch(type){ case NOTIFICATION_ACKNOWLEDGEMENT: ! asprintf(&temp_buffer,"HOST NOTIFICATION: %s;%s;ACKNOWLEDGEMENT (%s);%s;%s;%s;%s\n",cntct->name,hst->name,macro_x[MACRO_HOSTSTATE],command_name_ptr,macro_x[MACRO_HOSTOUTPUT],macro_x[MACRO_HOSTACKAUTHOR],macro_x[MACRO_HOSTACKCOMMENT]); break; case NOTIFICATION_FLAPPINGSTART: --- 1541,1549 ---- if(log_notifications==TRUE){ switch(type){ + case NOTIFICATION_CUSTOM: + asprintf(&temp_buffer,"HOST NOTIFICATION: %s;%s;CUSTOM (%s);%s;%s;%s;%s\n",cntct->name,hst->name,macro_x[MACRO_HOSTSTATE],command_name_ptr,macro_x[MACRO_HOSTOUTPUT],macro_x[MACRO_NOTIFICATIONAUTHOR],macro_x[MACRO_NOTIFICATIONCOMMENT]); + break; case NOTIFICATION_ACKNOWLEDGEMENT: ! asprintf(&temp_buffer,"HOST NOTIFICATION: %s;%s;ACKNOWLEDGEMENT (%s);%s;%s;%s;%s\n",cntct->name,hst->name,macro_x[MACRO_HOSTSTATE],command_name_ptr,macro_x[MACRO_HOSTOUTPUT],macro_x[MACRO_NOTIFICATIONAUTHOR],macro_x[MACRO_NOTIFICATIONCOMMENT]); break; case NOTIFICATION_FLAPPINGSTART: *************** *** 1571,1575 **** /* checks to see if a host escalation entry is a match for the current host notification */ ! int is_valid_host_escalation_for_host_notification(host *hst, hostescalation *he){ int notification_number=0; time_t current_time=0L; --- 1613,1617 ---- /* checks to see if a host escalation entry is a match for the current host notification */ ! int is_valid_escalation_for_host_notification(host *hst, hostescalation *he, int options){ int notification_number=0; time_t current_time=0L; *************** *** 1592,1595 **** --- 1634,1642 ---- return FALSE; + /*** EXCEPTION ***/ + /* broadcast options go to everyone, so this escalation is valid */ + if(options & NOTIFICATION_OPTION_BROADCAST) + return TRUE; + /* skip this escalation if it happens later */ if(he->first_notification > notification_number) *************** *** 1627,1631 **** /* we found a matching entry, so escalate this notification! */ ! if(is_valid_host_escalation_for_host_notification(hst,temp_he)==TRUE) return TRUE; } --- 1674,1678 ---- /* we found a matching entry, so escalate this notification! */ ! if(is_valid_escalation_for_host_notification(hst,temp_he,NOTIFICATION_OPTION_NONE)==TRUE) return TRUE; } *************** *** 1658,1661 **** --- 1705,1711 ---- asprintf(¯o_x[MACRO_NOTIFICATIONISESCALATED],"%d",escalate_notification); + if(options & NOTIFICATION_OPTION_BROADCAST) + log_debug_info(DEBUGL_NOTIFICATIONS,1,"This notification will be BROADCAST to all (escalated and normal) contacts...\n"); + /* use escalated contacts for this notification */ if(escalate_notification==TRUE || (options & NOTIFICATION_OPTION_BROADCAST)){ *************** *** 1667,1671 **** /* see if this escalation if valid for this notification */ ! if(is_valid_host_escalation_for_host_notification(hst,temp_he)==FALSE) continue; --- 1717,1721 ---- /* see if this escalation if valid for this notification */ ! if(is_valid_escalation_for_host_notification(hst,temp_he,options)==FALSE) continue; *************** *** 1760,1764 **** /* skip this entry if it isn't appropriate */ ! if(is_valid_escalation_for_service_notification(svc,temp_se)==FALSE) continue; --- 1810,1814 ---- /* skip this entry if it isn't appropriate */ ! if(is_valid_escalation_for_service_notification(svc,temp_se,NOTIFICATION_OPTION_NONE)==FALSE) continue; *************** *** 1819,1823 **** /* skip this entry if it isn't appropriate */ ! if(is_valid_host_escalation_for_host_notification(hst,temp_he)==FALSE) continue; --- 1869,1873 ---- /* skip this entry if it isn't appropriate */ ! if(is_valid_escalation_for_host_notification(hst,temp_he,NOTIFICATION_OPTION_NONE)==FALSE) continue; Index: utils.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/utils.c,v retrieving revision 1.193 retrieving revision 1.194 diff -C2 -d -r1.193 -r1.194 *** utils.c 7 Sep 2007 02:17:58 -0000 1.193 --- utils.c 13 Sep 2007 18:19:35 -0000 1.194 *************** *** 4,8 **** * * Copyright (c) 1999-2007 Ethan Galstad (na...@na...) ! * Last Modified: 09-06-2007 * * License: --- 4,8 ---- * * Copyright (c) 1999-2007 Ethan Galstad (na...@na...) ! * Last Modified: 09-13-2007 * * License: *************** *** 2957,2960 **** --- 2957,2963 ---- original_my_strtok_buffer=my_strtok_buffer; } + + if(my_strtok_buffer==NULL) + return NULL; sequence_head=my_strtok_buffer; |