From: <mgu...@us...> - 2012-11-12 18:33:44
|
Revision: 2466 http://nagios.svn.sourceforge.net/nagios/?rev=2466&view=rev Author: mguthrie88 Date: 2012-11-12 18:33:37 +0000 (Mon, 12 Nov 2012) Log Message: ----------- Merged changes from #2025. "Applied recent bug fixes in trunk to nagios-3-x-bugfixes branch" Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/cgi/tac.c nagioscore/branches/nagios-3-4-x/module/helloworld.c nagioscore/branches/nagios-3-4-x/sample-config/nagios.cfg.in nagioscore/branches/nagios-3-4-x/xdata/xpddefault.c nagioscore/branches/nagios-3-4-x/xdata/xpddefault.h Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 18:27:43 UTC (rev 2465) +++ nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 18:33:37 UTC (rev 2466) @@ -4,6 +4,8 @@ 3.4.2 - ??? ------------------ FIXES +* Fixed bug #247: If a service reports no performance data, the perfdata log file has no line indicating the test. (omn...@fr...) +* Fixed link for unhandled unreachable host problems on tactical overview page (Rudolf Cejka) * Fixed bug #345 with wild card searches not paging properly on status.cgi (Phil Randal) * Fixed bug #343 on status.cgi where Service Group Summary can potentially show wrong totals (Mark Ziesemer) * Fixed memory leaks on SIGHUP (Carlos Velasco) Modified: nagioscore/branches/nagios-3-4-x/cgi/tac.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/tac.c 2012-11-12 18:27:43 UTC (rev 2465) +++ nagioscore/branches/nagios-3-4-x/cgi/tac.c 2012-11-12 18:33:37 UTC (rev 2466) @@ -1208,7 +1208,7 @@ printf("<table border=0 width=100%%>\n"); if(hosts_unreachable_unacknowledged > 0) - printf("<tr><td width=100%% class='hostImportantProblem'><a href='%s?host=all&style=hostdetail&hoststatustypes=%d&hostprops=%d'>%d Unhandled Problems</a></td></tr>\n", STATUS_CGI, HOST_UNREACHABLE, HOST_NO_SCHEDULED_DOWNTIME | HOST_STATE_UNACKNOWLEDGED | HOST_CHECKS_ENABLED, hosts_unreachable_unacknowledged); + printf("<tr><td width=100%% class='hostImportantProblem'><a href='%s?hostgroup=all&style=hostdetail&hoststatustypes=%d&hostprops=%d'>%d Unhandled Problems</a></td></tr>\n", STATUS_CGI, HOST_UNREACHABLE, HOST_NO_SCHEDULED_DOWNTIME | HOST_STATE_UNACKNOWLEDGED | HOST_CHECKS_ENABLED, hosts_unreachable_unacknowledged); if(hosts_unreachable_scheduled > 0) printf("<tr><td width=100%% class='hostUnimportantProblem'><a href='%s?hostgroup=all&style=hostdetail&hoststatustypes=%d&hostprops=%d'>%d Scheduled</a></td></tr>\n", STATUS_CGI, HOST_UNREACHABLE, HOST_SCHEDULED_DOWNTIME, hosts_unreachable_scheduled); Modified: nagioscore/branches/nagios-3-4-x/module/helloworld.c =================================================================== --- nagioscore/branches/nagios-3-4-x/module/helloworld.c 2012-11-12 18:27:43 UTC (rev 2465) +++ nagioscore/branches/nagios-3-4-x/module/helloworld.c 2012-11-12 18:33:37 UTC (rev 2466) @@ -22,6 +22,8 @@ * *****************************************************************************/ +#include "../include/config.h" + /* include (minimum required) event broker header files */ #include "../include/nebmodules.h" #include "../include/nebcallbacks.h" Modified: nagioscore/branches/nagios-3-4-x/sample-config/nagios.cfg.in =================================================================== --- nagioscore/branches/nagios-3-4-x/sample-config/nagios.cfg.in 2012-11-12 18:27:43 UTC (rev 2465) +++ nagioscore/branches/nagios-3-4-x/sample-config/nagios.cfg.in 2012-11-12 18:33:37 UTC (rev 2466) @@ -901,6 +901,18 @@ +# HOST AND SERVICE PERFORMANCE DATA PROCESS EMPTY RESULTS +# THese options determine wether the core will process empty perfdata +# results or not. This is needed for distributed monitoring, and intentionally +# turned on by default. +# If you don't require empty perfdata - saving some cpu cycles +# on unwanted macro calculation - you can turn that off. Be careful! +# Values: 1 = enable, 0 = disable + +#host_perfdata_process_empty_results=1 +#service_perfdata_process_empty_results=1 + + # OBSESS OVER SERVICE CHECKS OPTION # This determines whether or not Nagios will obsess over service # checks and run the ocsp_command defined below. Unless you're Modified: nagioscore/branches/nagios-3-4-x/xdata/xpddefault.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xpddefault.c 2012-11-12 18:27:43 UTC (rev 2465) +++ nagioscore/branches/nagios-3-4-x/xdata/xpddefault.c 2012-11-12 18:33:37 UTC (rev 2466) @@ -63,6 +63,9 @@ command *xpddefault_host_perfdata_file_processing_command_ptr = NULL; command *xpddefault_service_perfdata_file_processing_command_ptr = NULL; +int xpddefault_host_perfdata_process_empty_results=DEFAULT_HOST_PERFDATA_PROCESS_EMPTY_RESULTS; +int xpddefault_service_perfdata_process_empty_results=DEFAULT_SERVICE_PERFDATA_PROCESS_EMPTY_RESULTS; + FILE *xpddefault_host_perfdata_fp = NULL; FILE *xpddefault_service_perfdata_fp = NULL; int xpddefault_host_perfdata_fd = -1; @@ -188,6 +191,10 @@ else if(!strcmp(varname, "service_perfdata_file_processing_command")) xpddefault_service_perfdata_file_processing_command = (char *)strdup(varvalue); + else if(!strcmp(varname,"host_perfdata_process_empty_results")) + xpddefault_host_perfdata_process_empty_results=(atoi(varvalue)>0)?TRUE:FALSE; + else if(!strcmp(varname,"service_perfdata_process_empty_results")) + xpddefault_service_perfdata_process_empty_results=(atoi(varvalue)>0)?TRUE:FALSE; /* free memory */ my_free(varname); @@ -381,14 +388,18 @@ /* * bail early if we've got nothing to do so we don't spend a lot * of time calculating macros that never get used - */ - if(!svc || !svc->perf_data || !*svc->perf_data) { - return OK; + * on distributed setups, empty perfdata results are required, so + * only drop out if demanded via configs. + */ + if(xpddefault_service_perfdata_process_empty_results==FALSE){ + if(!svc || !svc->perf_data || !*svc->perf_data) { + return OK; } - if((!xpddefault_service_perfdata_fp || !xpddefault_service_perfdata_file_template) && !xpddefault_service_perfdata_command) { - return OK; + if((!xpddefault_service_perfdata_fp || !xpddefault_service_perfdata_file_template) && !xpddefault_service_perfdata_command) { + return OK; } + } /* * we know we've got some work to do, so grab the necessary * macros and get busy @@ -422,13 +433,17 @@ /* * bail early if we've got nothing to do so we don't spend a lot * of time calculating macros that never get used + * on distributed setups, empty perfdata results are required, so + * only drop out if demanded via configs. */ - if(!hst || !hst->perf_data || !*hst->perf_data) { - return OK; + if(xpddefault_host_perfdata_process_empty_results==FALSE){ + if(!hst || !hst->perf_data || !*hst->perf_data) { + return OK; } - if((!xpddefault_host_perfdata_fp || !xpddefault_host_perfdata_file_template) && !xpddefault_host_perfdata_command) { - return OK; + if((!xpddefault_host_perfdata_fp || !xpddefault_host_perfdata_file_template) && !xpddefault_host_perfdata_command) { + return OK; } + } /* set up macros and get to work */ memset(&mac, 0, sizeof(mac)); Modified: nagioscore/branches/nagios-3-4-x/xdata/xpddefault.h =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xpddefault.h 2012-11-12 18:27:43 UTC (rev 2465) +++ nagioscore/branches/nagios-3-4-x/xdata/xpddefault.h 2012-11-12 18:33:37 UTC (rev 2466) @@ -31,6 +31,8 @@ #define DEFAULT_HOST_PERFDATA_FILE_TEMPLATE "[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$" #define DEFAULT_SERVICE_PERFDATA_FILE_TEMPLATE "[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$" +#define DEFAULT_HOST_PERFDATA_PROCESS_EMPTY_RESULTS 1 +#define DEFAULT_SERVICE_PERFDATA_PROCESS_EMPTY_RESULTS 1 int xpddefault_initialize_performance_data(char *); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mgu...@us...> - 2012-11-12 20:14:24
|
Revision: 2467 http://nagios.svn.sourceforge.net/nagios/?rev=2467&view=rev Author: mguthrie88 Date: 2012-11-12 20:14:16 +0000 (Mon, 12 Nov 2012) Log Message: ----------- Applied changes from commit #2457. "Corrected logic to reinstate downtimes after Nagios restart." Manually applied the patches to downtime.c and downtime.h, still need to verify correct functionality in new branch. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/common/downtime.c nagioscore/branches/nagios-3-4-x/include/downtime.h nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 18:33:37 UTC (rev 2466) +++ nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 20:14:16 UTC (rev 2467) @@ -4,6 +4,8 @@ 3.4.2 - ??? ------------------ FIXES +* Corrected logic so that end times for flexible downtimes are calculated from the downtime start rather than the current time in the case where Nagios is restarted (Eric Stanley) +* Fixed issue introduced by fix for bug #124 where flexible downtimes are not taken into account on Nagios restart. (Scott Wilkerson, Eric Stanley) * Fixed bug #247: If a service reports no performance data, the perfdata log file has no line indicating the test. (omn...@fr...) * Fixed link for unhandled unreachable host problems on tactical overview page (Rudolf Cejka) * Fixed bug #345 with wild card searches not paging properly on status.cgi (Phil Randal) Modified: nagioscore/branches/nagios-3-4-x/common/downtime.c =================================================================== --- nagioscore/branches/nagios-3-4-x/common/downtime.c 2012-11-12 18:33:37 UTC (rev 2466) +++ nagioscore/branches/nagios-3-4-x/common/downtime.c 2012-11-12 20:14:16 UTC (rev 2467) @@ -66,6 +66,8 @@ /* initializes scheduled downtime data */ int initialize_downtime_data(char *config_file) { int result = OK; + + log_debug_info(DEBUGL_FUNCTIONS, 0, "initialize_downtime_data()\n"); /**** IMPLEMENTATION-SPECIFIC CALLS ****/ #ifdef USE_XDDDEFAULT @@ -79,6 +81,8 @@ /* cleans up scheduled downtime data */ int cleanup_downtime_data(char *config_file) { int result = OK; + + log_debug_info(DEBUGL_FUNCTIONS, 0, "cleanup_downtime_data()\n"); /**** IMPLEMENTATION-SPECIFIC CALLS ****/ #ifdef USE_XDDDEFAULT @@ -103,9 +107,14 @@ log_debug_info(DEBUGL_FUNCTIONS, 0, "schedule_downtime()\n"); /* don't add old or invalid downtimes */ - if(start_time >= end_time || end_time <= time(NULL)) - return ERROR; + if(start_time >= end_time || end_time <= time(NULL)) { + log_debug_info(DEBUGL_DOWNTIME, 1, "Invalid start (%lu) or end (%lu) times\n", + start_time, end_time); + return ERROR; + } + + /* add a new downtime entry */ add_new_downtime(type, host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, &downtime_id, FALSE); @@ -238,6 +247,7 @@ int register_downtime(int type, unsigned long downtime_id) { char *temp_buffer = NULL; char start_time_string[MAX_DATETIME_LENGTH] = ""; + char flex_start_string[MAX_DATETIME_LENGTH] = ""; char end_time_string[MAX_DATETIME_LENGTH] = ""; scheduled_downtime *temp_downtime = NULL; host *hst = NULL; @@ -247,26 +257,39 @@ int minutes = 0; int seconds = 0; unsigned long *new_downtime_id = NULL; + int was_in_effect = FALSE; - log_debug_info(DEBUGL_FUNCTIONS, 0, "register_downtime()\n"); + log_debug_info(DEBUGL_FUNCTIONS, 0, "register_downtime( %d, %lu)\n", type, + downtime_id); /* find the downtime entry in memory */ temp_downtime = find_downtime(type, downtime_id); - if(temp_downtime == NULL) - return ERROR; + if(temp_downtime == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 0, "Cannot find downtime ID: %lu\n", downtime_id); + return ERROR; + } /* find the host or service associated with this downtime */ if(temp_downtime->type == HOST_DOWNTIME) { - if((hst = find_host(temp_downtime->host_name)) == NULL) - return ERROR; - } + if((hst = find_host(temp_downtime->host_name)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Cannot find host (%s) for downtime ID: %lu\n", + temp_downtime->host_name, downtime_id); + return ERROR; + } else { - if((svc = find_service(temp_downtime->host_name, temp_downtime->service_description)) == NULL) - return ERROR; + if((svc = find_service(temp_downtime->host_name, temp_downtime->service_description)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Cannot find service (%s) for host (%s) for downtime ID: %lu\n", + temp_downtime->service_description, temp_downtime->host_name, + downtime_id); + return ERROR; + } } /* create the comment */ get_datetime_string(&(temp_downtime->start_time), start_time_string, MAX_DATETIME_LENGTH, SHORT_DATE_TIME); + get_datetime_string(&(temp_downtime->flex_downtime_start), flex_start_string, MAX_DATETIME_LENGTH, SHORT_DATE_TIME); get_datetime_string(&(temp_downtime->end_time), end_time_string, MAX_DATETIME_LENGTH, SHORT_DATE_TIME); hours = temp_downtime->duration / 3600; minutes = ((temp_downtime->duration - (hours * 3600)) / 60); @@ -293,6 +316,9 @@ } log_debug_info(DEBUGL_DOWNTIME, 0, " Fixed/Flex: %s\n", (temp_downtime->fixed == TRUE) ? "Fixed" : "Flexible"); log_debug_info(DEBUGL_DOWNTIME, 0, " Start: %s\n", start_time_string); + if( temp_downtime->flex_downtime_start) { + log_debug_info(DEBUGL_DOWNTIME, 0, " Flex Start: %s\n", flex_start_string); + } log_debug_info(DEBUGL_DOWNTIME, 0, " End: %s\n", end_time_string); log_debug_info(DEBUGL_DOWNTIME, 0, " Duration: %dh %dm %ds\n", hours, minutes, seconds); log_debug_info(DEBUGL_DOWNTIME, 0, " Downtime ID: %lu\n", temp_downtime->downtime_id); @@ -310,13 +336,44 @@ /*** SCHEDULE DOWNTIME - FLEXIBLE (NON-FIXED) DOWNTIME IS HANDLED AT A LATER POINT ***/ /* only non-triggered downtime is scheduled... */ - if(temp_downtime->triggered_by == 0) { + if((temp_downtime->triggered_by == 0) && ((TRUE == temp_downtime->fixed) || + ((FALSE == temp_downtime->fixed) && + (TRUE == temp_downtime->is_in_effect)))) { + /* If this is a fixed downtime, schedule the event to start it. If this + is a flexible downtime, normally we wait for one of the + check_pending_flex_*_downtime() functions to start it, but if the + downtime is already in effect, this means that we are restarting + Nagios and the downtime was in effect when we last shutdown + Nagios, so we should restart the flexible downtime now. This + should work even if the downtime has ended because the + handle_scheduled_dowtime() function will immediately schedule + another downtime event which will end the downtime. */ if((new_downtime_id = (unsigned long *)malloc(sizeof(unsigned long *)))) { *new_downtime_id = downtime_id; - schedule_new_event(EVENT_SCHEDULED_DOWNTIME, TRUE, temp_downtime->start_time, FALSE, 0, NULL, FALSE, (void *)new_downtime_id, NULL, 0); + temp_downtime->start_event = schedule_new_event(EVENT_SCHEDULED_DOWNTIME, TRUE, temp_downtime->start_time, FALSE, 0, NULL, FALSE, (void *)new_downtime_id, NULL, 0); + /* Turn off is_in_effect flag so handle_scheduled_downtime() will + handle it correctly */ + was_in_effect = temp_downtime->is_in_effect; + temp_downtime->is_in_effect = FALSE; } } + if((FALSE == temp_downtime->fixed) && (FALSE == was_in_effect)) { + /* increment pending flex downtime counter */ + if(temp_downtime->type == HOST_DOWNTIME) + hst->pending_flex_downtime++; + else + svc->pending_flex_downtime++; + temp_downtime->incremented_pending_downtime = TRUE; + + /* Since a flex downtime may never start, schedule an expiring event in + case the event is never triggered. The expire event will NOT cancel + a downtime event that is in effect */ + log_debug_info(DEBUGL_DOWNTIME, 1, "Scheduling downtime expire event in case flexible downtime is never triggered\n"); + temp_downtime->stop_event = schedule_new_event(EVENT_EXPIRE_DOWNTIME, TRUE, (temp_downtime->end_time + 1), FALSE, 0, NULL, FALSE, NULL, NULL, 0); + } + + #ifdef PROBABLY_NOT_NEEDED /*** FLEXIBLE DOWNTIME SANITY CHECK - ADDED 02/17/2008 ****/ @@ -338,10 +395,15 @@ /* handles scheduled downtime (id passed from timed event queue) */ int handle_scheduled_downtime_by_id(unsigned long downtime_id) { scheduled_downtime *temp_downtime = NULL; + + log_debug_info(DEBUGL_FUNCTIONS, 0, "handle_scheduled_downtime_by_id()\n"); /* find the downtime entry */ - if((temp_downtime = find_downtime(ANY_DOWNTIME, downtime_id)) == NULL) - return ERROR; + if((temp_downtime = find_downtime(ANY_DOWNTIME, downtime_id)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, "Unable to find downtime id: %lu\n", + downtime_id); + return ERROR; + } /* handle the downtime */ return handle_scheduled_downtime(temp_downtime); @@ -355,7 +417,7 @@ host *hst = NULL; service *svc = NULL; time_t event_time = 0L; - time_t current_time = 0L; + //time_t current_time = 0L; unsigned long *new_downtime_id = NULL; #ifdef USE_EVENT_BROKER int attr = 0; @@ -369,70 +431,19 @@ /* find the host or service associated with this downtime */ if(temp_downtime->type == HOST_DOWNTIME) { - if((hst = find_host(temp_downtime->host_name)) == NULL) - return ERROR; - } + if((hst = find_host(temp_downtime->host_name)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, "Unable to find host (%s) for downtime\n", temp_downtime->host_name); + return ERROR; + } else { - if((svc = find_service(temp_downtime->host_name, temp_downtime->service_description)) == NULL) - return ERROR; - } - - /* if downtime if flexible and host/svc is in an ok state, don't do anything right now (wait for event handler to kick it off) */ - /* start_flex_downtime variable is set to TRUE by event handler functions */ - if(temp_downtime->fixed == FALSE) { - - /* we're not supposed to force a start of flex downtime... */ - if(temp_downtime->start_flex_downtime == FALSE) { - - /* host is up or service is ok, so we don't really do anything right now */ - if((temp_downtime->type == HOST_DOWNTIME && hst->current_state == HOST_UP) || (temp_downtime->type == SERVICE_DOWNTIME && svc->current_state == STATE_OK)) { - - /* increment pending flex downtime counter */ - if(temp_downtime->type == HOST_DOWNTIME) - hst->pending_flex_downtime++; - else - svc->pending_flex_downtime++; - temp_downtime->incremented_pending_downtime = TRUE; - - /*** SINCE THE FLEX DOWNTIME MAY NEVER START, WE HAVE TO PROVIDE A WAY OF EXPIRING UNUSED DOWNTIME... ***/ - - schedule_new_event(EVENT_EXPIRE_DOWNTIME, TRUE, (temp_downtime->end_time + 1), FALSE, 0, NULL, FALSE, NULL, NULL, 0); - - return OK; - } + if((svc = find_service(temp_downtime->host_name, temp_downtime->service_description)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, "Unable to find service (%s) host (%s) for downtime\n", temp_downtime->service_description, temp_downtime->host_name); + return ERROR; + } } - /* if downtime handler gets triggerd in between then there seems to be a restart */ - time(¤t_time); - if(temp_downtime->start_time < current_time && current_time < temp_downtime->end_time && temp_downtime->is_in_effect == TRUE) { -#ifdef USE_EVENT_BROKER - /* send data to event broker */ - broker_downtime_data(NEBTYPE_DOWNTIME_START, NEBFLAG_NONE, NEBATTR_NONE, temp_downtime->type, temp_downtime->host_name, temp_downtime->service_description, temp_downtime->entry_time, temp_downtime->author, temp_downtime->comment, temp_downtime->start_time, temp_downtime->end_time, temp_downtime->fixed, temp_downtime->triggered_by, temp_downtime->duration, temp_downtime->downtime_id, NULL); -#endif - /* increment the downtime depth variable */ - if(temp_downtime->type == HOST_DOWNTIME) { - hst->scheduled_downtime_depth++; - update_host_status(hst, FALSE); - } - else { - svc->scheduled_downtime_depth++; - update_service_status(svc, FALSE); - } - - /* schedule an event */ - if(temp_downtime->fixed == FALSE) - event_time = (time_t)((unsigned long)time(NULL) + temp_downtime->duration); - else - event_time = temp_downtime->end_time; - if((new_downtime_id = (unsigned long *)malloc(sizeof(unsigned long)))) { - *new_downtime_id = temp_downtime->downtime_id; - schedule_new_event(EVENT_SCHEDULED_DOWNTIME, TRUE, event_time, FALSE, 0, NULL, FALSE, (void *)new_downtime_id, NULL, 0); - } - return OK; - } - /* have we come to the end of the scheduled downtime? */ if(temp_downtime->is_in_effect == TRUE) { @@ -556,11 +567,14 @@ else update_service_status(svc, FALSE); - /* schedule an event */ - if(temp_downtime->fixed == FALSE) - event_time = (time_t)((unsigned long)time(NULL) + temp_downtime->duration); - else - event_time = temp_downtime->end_time; + /* schedule an event to end the downtime */ + if(temp_downtime->fixed == FALSE) { + event_time = (time_t)((unsigned long)temp_downtime->flex_downtime_start + + temp_downtime->duration); + } + else { + event_time = temp_downtime->end_time; + } if((new_downtime_id = (unsigned long *)malloc(sizeof(unsigned long *)))) { *new_downtime_id = temp_downtime->downtime_id; schedule_new_event(EVENT_SCHEDULED_DOWNTIME, TRUE, event_time, FALSE, 0, NULL, FALSE, (void *)new_downtime_id, NULL, 0); @@ -582,8 +596,8 @@ int check_pending_flex_host_downtime(host *hst) { scheduled_downtime *temp_downtime = NULL; time_t current_time = 0L; + unsigned long * new_downtime_id = NULL; - log_debug_info(DEBUGL_FUNCTIONS, 0, "check_pending_flex_host_downtime()\n"); if(hst == NULL) @@ -619,8 +633,11 @@ log_debug_info(DEBUGL_DOWNTIME, 0, "Flexible downtime (id=%lu) for host '%s' starting now...\n", temp_downtime->downtime_id, hst->name); - temp_downtime->start_flex_downtime = TRUE; - handle_scheduled_downtime(temp_downtime); + temp_downtime->flex_downtime_start = current_time; + if((new_downtime_id = (unsigned long *)malloc(sizeof(unsigned long *)))) { + *new_downtime_id = temp_downtime->downtime_id; + temp_downtime->start_event = schedule_new_event(EVENT_SCHEDULED_DOWNTIME, TRUE, temp_downtime->flex_downtime_start, FALSE, 0, NULL, FALSE, (void *)new_downtime_id, NULL, 0); + } } } } @@ -933,55 +950,72 @@ /******************************************************************/ /* adds a host downtime entry to the list in memory */ -int add_host_downtime(char *host_name, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ - int result = OK; +int add_host_downtime(char *host_name, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ + int result = OK; - result = add_downtime(HOST_DOWNTIME, host_name, NULL, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); - + result = add_downtime(HOST_DOWNTIME, host_name, NULL, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + return result; } /* adds a service downtime entry to the list in memory */ -int add_service_downtime(char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ - int result = OK; +int add_service_downtime(char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ + int result = OK; - result = add_downtime(SERVICE_DOWNTIME, host_name, svc_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); - + result = add_downtime(SERVICE_DOWNTIME, host_name, svc_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + return result; } /* adds a host or service downtime entry to the list in memory */ -int add_downtime(int downtime_type, char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ - scheduled_downtime *new_downtime = NULL; +int add_downtime(int downtime_type, char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ + scheduled_downtime *new_downtime = NULL; scheduled_downtime *last_downtime = NULL; scheduled_downtime *temp_downtime = NULL; int result = OK; + + log_debug_info(DEBUGL_FUNCTIONS, 0, "add_downtime()\n"); /* don't add triggered downtimes that don't have a valid parent */ - if(triggered_by > 0 && find_downtime(ANY_DOWNTIME, triggered_by) == NULL) - return ERROR; + if(triggered_by > 0 && find_downtime(ANY_DOWNTIME, triggered_by) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Downtime is triggered, but has no valid parent\n"); + return ERROR; + } /* we don't have enough info */ - if(host_name == NULL || (downtime_type == SERVICE_DOWNTIME && svc_description == NULL)) - return ERROR; + if(host_name == NULL || (downtime_type == SERVICE_DOWNTIME && svc_description == NULL)) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Host name (%s) or service description (%s) is null\n", + ((NULL == host_name) ? "null" : host_name), + ((NULL == svc_description) ? "null" : svc_description)); + return ERROR; + } /* allocate memory for the downtime */ if((new_downtime = (scheduled_downtime *)calloc(1, sizeof(scheduled_downtime))) == NULL) return ERROR; /* duplicate vars */ - if((new_downtime->host_name = (char *)strdup(host_name)) == NULL) - result = ERROR; + if((new_downtime->host_name = (char *)strdup(host_name)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Unable to allocate memory for new downtime's host name\n"); + result = ERROR; + } if(downtime_type == SERVICE_DOWNTIME) { - if((new_downtime->service_description = (char *)strdup(svc_description)) == NULL) - result = ERROR; - } + if((new_downtime->service_description = (char *)strdup(svc_description)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Unable to allocate memory for new downtime's service description\n"); + result = ERROR; + } if(author) { - if((new_downtime->author = (char *)strdup(author)) == NULL) - result = ERROR; - } + if((new_downtime->author = (char *)strdup(author)) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Unable to allocate memory for new downtime's author\n"); + result = ERROR; + } if(comment_data) { if((new_downtime->comment = (char *)strdup(comment_data)) == NULL) result = ERROR; @@ -1000,12 +1034,17 @@ new_downtime->type = downtime_type; new_downtime->entry_time = entry_time; new_downtime->start_time = start_time; + new_downtime->flex_downtime_start = flex_downtime_start; new_downtime->end_time = end_time; new_downtime->fixed = (fixed > 0) ? TRUE : FALSE; new_downtime->triggered_by = triggered_by; new_downtime->duration = duration; new_downtime->downtime_id = downtime_id; new_downtime->is_in_effect=is_in_effect; +#ifdef NSCORE + new_downtime->start_event = ( timed_event *)0; + new_downtime->stop_event = ( timed_event *)0; +#endif if(defer_downtime_sorting) { new_downtime->next = scheduled_downtime_list; @@ -1064,6 +1103,8 @@ int sort_downtime(void) { scheduled_downtime **array, *temp_downtime; unsigned long i = 0, unsorted_downtimes = 0; + + log_debug_info(DEBUGL_FUNCTIONS, 0, "sort_downtime()\n"); if(!defer_downtime_sorting) return OK; @@ -1105,8 +1146,12 @@ /* finds a specific downtime entry */ scheduled_downtime *find_downtime(int type, unsigned long downtime_id) { scheduled_downtime *temp_downtime = NULL; + + log_debug_info(DEBUGL_FUNCTIONS, 0, "find_downtime()\n"); for(temp_downtime = scheduled_downtime_list; temp_downtime != NULL; temp_downtime = temp_downtime->next) { + log_debug_info(DEBUGL_DOWNTIME, 2, "find_downtime() looking at type %d, id: %lu\n", type, downtime_id); + if(type != ANY_DOWNTIME && temp_downtime->type != type) continue; if(temp_downtime->downtime_id == downtime_id) Modified: nagioscore/branches/nagios-3-4-x/include/downtime.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/downtime.h 2012-11-12 18:33:37 UTC (rev 2466) +++ nagioscore/branches/nagios-3-4-x/include/downtime.h 2012-11-12 20:14:16 UTC (rev 2467) @@ -39,6 +39,7 @@ char *service_description; time_t entry_time; time_t start_time; + time_t flex_downtime_start; /* Time the flexible downtime started */ time_t end_time; int fixed; unsigned long triggered_by; @@ -82,15 +83,15 @@ int check_for_expired_downtime(void); #endif -int add_host_downtime(char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); -int add_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); +int add_host_downtime(char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); +int add_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); /* If you are going to be adding a lot of downtime in sequence, set defer_downtime_sorting to 1 before you start and then call sort_downtime afterwards. Things will go MUCH faster. */ extern int defer_downtime_sorting; -int add_downtime(int, char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); +int add_downtime(int, char *, char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); int sort_downtime(void); scheduled_downtime *find_downtime(int, unsigned long); Modified: nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c 2012-11-12 18:33:37 UTC (rev 2466) +++ nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c 2012-11-12 20:14:16 UTC (rev 2467) @@ -100,17 +100,52 @@ save = TRUE; /* delete downtimes with invalid host names */ - if(find_host(temp_downtime->host_name) == NULL) + if(find_host(temp_downtime->host_name) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Deleting downtime with invalid host name: %s\n", + temp_downtime->host_name); save = FALSE; + } /* delete downtimes with invalid service descriptions */ - if(temp_downtime->type == SERVICE_DOWNTIME && find_service(temp_downtime->host_name, temp_downtime->service_description) == NULL) + if(temp_downtime->type == SERVICE_DOWNTIME && find_service(temp_downtime->host_name, temp_downtime->service_description) == NULL) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Deleting downtime with invalid service description: %s\n", + temp_downtime->service_description); save = FALSE; + } - /* delete downtimes that have expired */ - if(temp_downtime->end_time < time(NULL)) + /* delete fixed downtimes that have expired */ + if((TRUE == temp_downtime->fixed) && + (temp_downtime->end_time < time(NULL))) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Deleting fixed downtime that expired at: %lu\n", + temp_downtime->end_time); save = FALSE; + } + /* delete flexible downtimes that never started and have expired */ + if((FALSE == temp_downtime->fixed) && + (0 == temp_downtime->flex_downtime_start) && + (temp_downtime->end_time < time(NULL))) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Deleting flexible downtime that expired at: %lu\n", + temp_downtime->end_time); + save = FALSE; + } + + /* delete flexible downtimes that started but whose duration + has completed */ + if((FALSE == temp_downtime->fixed) && + (0 != temp_downtime->flex_downtime_start) && + ((temp_downtime->flex_downtime_start + temp_downtime->duration) + < time(NULL))) { + log_debug_info(DEBUGL_DOWNTIME, 1, + "Deleting flexible downtime whose duration ended at: %lu\n", + temp_downtime->flex_downtime_start + temp_downtime->duration); + save = FALSE; + } + /* delete the downtime */ if(save == FALSE) { update_file = TRUE; @@ -167,7 +202,7 @@ next_downtime_id++; /* add downtime to list in memory */ - add_host_downtime(host_name, entry_time, author, comment, start_time, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect); + add_host_downtime(host_name, entry_time, author, comment, start_time, (time_t)0, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect); /* update downtime file */ xdddefault_save_downtime_data(); @@ -192,7 +227,7 @@ next_downtime_id++; /* add downtime to list in memory */ - add_service_downtime(host_name, service_description, entry_time, author, comment, start_time, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect); + add_service_downtime(host_name, service_description, entry_time, author, comment, start_time, (time_t)0, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect); /* update downtime file */ xdddefault_save_downtime_data(); Modified: nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c 2012-11-12 18:33:37 UTC (rev 2466) +++ nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c 2012-11-12 20:14:16 UTC (rev 2467) @@ -551,9 +551,11 @@ fprintf(fp, "host_name=%s\n", temp_downtime->host_name); if(temp_downtime->type == SERVICE_DOWNTIME) fprintf(fp, "service_description=%s\n", temp_downtime->service_description); + fprintf(fp, "comment_id=%lu\n", temp_downtime->comment_id); fprintf(fp, "downtime_id=%lu\n", temp_downtime->downtime_id); fprintf(fp, "entry_time=%lu\n", temp_downtime->entry_time); fprintf(fp, "start_time=%lu\n", temp_downtime->start_time); + fprintf(fp, "flex_downtime_start=%lu\n", temp_downtime->flex_downtime_start); fprintf(fp, "end_time=%lu\n", temp_downtime->end_time); fprintf(fp, "triggered_by=%lu\n", temp_downtime->triggered_by); fprintf(fp, "fixed=%d\n", temp_downtime->fixed); @@ -639,6 +641,7 @@ int scheduling_info_is_ok = FALSE; unsigned long downtime_id = 0; time_t start_time = 0L; + time_t flex_downtime_start = ( time_t)0; time_t end_time = 0L; int fixed = FALSE; unsigned long triggered_by = 0; @@ -962,9 +965,9 @@ /* add the downtime */ if(data_type == XRDDEFAULT_HOSTDOWNTIME_DATA) - add_host_downtime(host_name, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_host_downtime(host_name, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); else - add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); /* must register the downtime with Nagios so it can schedule it, add comments, etc. */ register_downtime((data_type == XRDDEFAULT_HOSTDOWNTIME_DATA) ? HOST_DOWNTIME : SERVICE_DOWNTIME, downtime_id); @@ -979,6 +982,7 @@ downtime_id = 0; entry_time = 0L; start_time = 0L; + flex_downtime_start = ( time_t)0; end_time = 0L; fixed = FALSE; triggered_by = 0; @@ -1826,10 +1830,14 @@ service_description = (char *)strdup(val); else if(!strcmp(var, "downtime_id")) downtime_id = strtoul(val, NULL, 10); + else if(!strcmp(var, "comment_id")) + comment_id = strtoul(val, NULL, 10); else if(!strcmp(var, "entry_time")) entry_time = strtoul(val, NULL, 10); else if(!strcmp(var, "start_time")) start_time = strtoul(val, NULL, 10); + else if(!strcmp(var, "flex_downtime_start")) + flex_downtime_start = strtoul(val, NULL, 10); else if(!strcmp(var, "end_time")) end_time = strtoul(val, NULL, 10); else if(!strcmp(var, "fixed")) Modified: nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c 2012-11-12 18:33:37 UTC (rev 2466) +++ nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c 2012-11-12 20:14:16 UTC (rev 2467) @@ -662,8 +662,10 @@ if(temp_downtime->type == SERVICE_DOWNTIME) fprintf(fp, "\tservice_description=%s\n", temp_downtime->service_description); fprintf(fp, "\tdowntime_id=%lu\n", temp_downtime->downtime_id); + fprintf(fp, "\tcomment_id=%lu\n", temp_downtime->comment_id); fprintf(fp, "\tentry_time=%lu\n", temp_downtime->entry_time); fprintf(fp, "\tstart_time=%lu\n", temp_downtime->start_time); + fprintf(fp, "\tflex_downtime_start=%lu\n", temp_downtime->flex_downtime_start); fprintf(fp, "\tend_time=%lu\n", temp_downtime->end_time); fprintf(fp, "\ttriggered_by=%lu\n", temp_downtime->triggered_by); fprintf(fp, "\tfixed=%d\n", temp_downtime->fixed); @@ -756,6 +758,7 @@ char *comment_data = NULL; unsigned long downtime_id = 0; time_t start_time = 0L; + time_t flex_downtime_start = 0L; time_t end_time = 0L; int fixed = FALSE; unsigned long triggered_by = 0; @@ -888,9 +891,9 @@ /* add the downtime */ if(data_type == XSDDEFAULT_HOSTDOWNTIME_DATA) - add_host_downtime(host_name, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_host_downtime(host_name, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); else - add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); /* free temp memory */ my_free(host_name); @@ -1255,10 +1258,14 @@ service_description = (char *)strdup(val); else if(!strcmp(var, "downtime_id")) downtime_id = strtoul(val, NULL, 10); + else if(!strcmp(var, "comment_id")) + comment_id = strtoul(val, NULL, 10); else if(!strcmp(var, "entry_time")) entry_time = strtoul(val, NULL, 10); else if(!strcmp(var, "start_time")) start_time = strtoul(val, NULL, 10); + else if(!strcmp(var, "flex_downtime_start")) + flex_downtime_start = strtoul(val, NULL, 10); else if(!strcmp(var, "end_time")) end_time = strtoul(val, NULL, 10); else if(!strcmp(var, "fixed")) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mgu...@us...> - 2012-11-12 20:19:43
|
Revision: 2468 http://nagios.svn.sourceforge.net/nagios/?rev=2468&view=rev Author: mguthrie88 Date: 2012-11-12 20:19:36 +0000 (Mon, 12 Nov 2012) Log Message: ----------- Applied changes from commit #2461. "Fixed issue where deleting a downtime could cause Nagios to crash." Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/common/downtime.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 20:14:16 UTC (rev 2467) +++ nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 20:19:36 UTC (rev 2468) @@ -4,6 +4,7 @@ 3.4.2 - ??? ------------------ FIXES +* Fixed issue where deleting a downtime could cause Nagios to crash (Eric Stanley) * Corrected logic so that end times for flexible downtimes are calculated from the downtime start rather than the current time in the case where Nagios is restarted (Eric Stanley) * Fixed issue introduced by fix for bug #124 where flexible downtimes are not taken into account on Nagios restart. (Scott Wilkerson, Eric Stanley) * Fixed bug #247: If a service reports no performance data, the perfdata log file has no line indicating the test. (omn...@fr...) Modified: nagioscore/branches/nagios-3-4-x/common/downtime.c =================================================================== --- nagioscore/branches/nagios-3-4-x/common/downtime.c 2012-11-12 20:14:16 UTC (rev 2467) +++ nagioscore/branches/nagios-3-4-x/common/downtime.c 2012-11-12 20:19:36 UTC (rev 2468) @@ -405,6 +405,13 @@ return ERROR; } + /* NULL out this event's start time since the calling function, + handle_timed_event(), will free the event, this will prevent + unschedule_downtime from freeing something that has already been + freed. The start event is not needed within + handle_scheduled_downtime(). */ + temp_downtime->start_event = NULL; + /* handle the downtime */ return handle_scheduled_downtime(temp_downtime); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mgu...@us...> - 2012-11-12 20:42:28
|
Revision: 2469 http://nagios.svn.sourceforge.net/nagios/?rev=2469&view=rev Author: mguthrie88 Date: 2012-11-12 20:42:21 +0000 (Mon, 12 Nov 2012) Log Message: ----------- Updated version for 3.4.3RC1. New branch currently untested. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/Changelog 2012-11-12 20:42:21 UTC (rev 2469) @@ -1,7 +1,15 @@ ##################### Nagios 3.x Change Log ##################### -3.4.2 - ??? +3.4.3 - ??? +----------------- +- Reverted event queue changes intended for Nagios 4 +- Reapplied all patches from 3.4.2 release + + + + +3.4.2 - 11/09/2012 ------------------ FIXES * Fixed issue where deleting a downtime could cause Nagios to crash (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2012-11-12 20:42:21 UTC (rev 2469) @@ -3,13 +3,13 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.4.1 + * Version: 3.4.3RC1 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad * * First Written: 01-28-1999 (start of development) - * Last Modified: 05-11-2012 + * Last Modified: 11-12-2012 * * Description: * Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2012-11-12 20:42:21 UTC (rev 2469) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.4.1 + * Version: 3.4.3RC1 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/configure 2012-11-12 20:42:21 UTC (rev 2469) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.4.1" +PKG_VERSION="3.4.3RC1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="05-11-2012" +PKG_REL_DATE="11-12-2012" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/configure.in 2012-11-12 20:42:21 UTC (rev 2469) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.4.1" +PKG_VERSION="3.4.3RC1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="05-11-2012" +PKG_REL_DATE="11-12-2012" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2012-11-12 20:42:21 UTC (rev 2469) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.4.1" -#define PROGRAM_MODIFICATION_DATE "05-11-2012" +#define PROGRAM_VERSION "3.4.3RC1" +#define PROGRAM_MODIFICATION_DATE "11-12-2012" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2012-11-12 20:42:21 UTC (rev 2469) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.4.1 +%define version 3.4.3RC1 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2012-11-12 20:19:36 UTC (rev 2468) +++ nagioscore/branches/nagios-3-4-x/update-version 2012-11-12 20:42:21 UTC (rev 2469) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.4.1 +CURRENTVERSION=3.4.3RC1 # Last date -LASTDATE=05-11-2012 +LASTDATE=11-12-2012 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mgu...@us...> - 2012-11-13 16:28:14
|
Revision: 2471 http://nagios.svn.sourceforge.net/nagios/?rev=2471&view=rev Author: mguthrie88 Date: 2012-11-13 16:28:04 +0000 (Tue, 13 Nov 2012) Log Message: ----------- - Applied fix for pagination and sorting on status.cgi #381 (Phil Randal) Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/cgi/status.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2012-11-13 13:20:26 UTC (rev 2470) +++ nagioscore/branches/nagios-3-4-x/Changelog 2012-11-13 16:28:04 UTC (rev 2471) @@ -3,8 +3,9 @@ ##################### 3.4.3 - ??? ----------------- -- Reverted event queue changes intended for Nagios 4 +- Reverted squeue changes intended for Nagios 4 - Reapplied all patches from 3.4.2 release +- Applied fix for pagination and sorting on status.cgi #381 (Phil Randal) Modified: nagioscore/branches/nagios-3-4-x/cgi/status.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/status.c 2012-11-13 13:20:26 UTC (rev 2470) +++ nagioscore/branches/nagios-3-4-x/cgi/status.c 2012-11-13 16:28:04 UTC (rev 2471) @@ -1452,13 +1452,26 @@ temp_url[sizeof(temp_url) - 1] = '\x0'; } */ - + + if (sort_type != SORT_NONE) { + snprintf(temp_buffer, sizeof(temp_buffer), "&sorttype=%i&sortoption=%i", sort_type, sort_option); + temp_buffer[sizeof(temp_buffer) - 1] = '\x0'; + strncat(temp_url, temp_buffer, sizeof(temp_url) - strlen(temp_url) - 1); + temp_url[sizeof(temp_url) - 1] = '\x0'; + } + /* GET input can override cgi.cfg */ if(limit_results==TRUE) result_limit = temp_result_limit ? temp_result_limit : result_limit; else result_limit = 0; /* select box to set result limit */ + if(result_limit) { + snprintf(temp_buffer, sizeof(temp_buffer) - 1, "&limit=%i", temp_result_limit); + temp_buffer[sizeof(temp_buffer) - 1] = '\x0'; + strncat(temp_url, temp_buffer, sizeof(temp_url) - strlen(temp_url) - 1); + temp_url[sizeof(temp_url) - 1] = '\x0'; + } create_page_limiter(result_limit,temp_url); /* the main list of services */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mgu...@us...> - 2012-11-13 16:49:59
|
Revision: 2472 http://nagios.svn.sourceforge.net/nagios/?rev=2472&view=rev Author: mguthrie88 Date: 2012-11-13 16:49:49 +0000 (Tue, 13 Nov 2012) Log Message: ----------- Updated date to build RC tarball Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/include/downtime.h nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2012-11-13 16:28:04 UTC (rev 2471) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2012-11-13 16:49:49 UTC (rev 2472) @@ -9,7 +9,7 @@ * Copyright (c) 1999-2009 Ethan Galstad * * First Written: 01-28-1999 (start of development) - * Last Modified: 11-12-2012 + * Last Modified: * * Description: * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2012-11-13 16:28:04 UTC (rev 2471) +++ nagioscore/branches/nagios-3-4-x/configure 2012-11-13 16:49:49 UTC (rev 2472) @@ -1316,7 +1316,7 @@ PKG_NAME=nagios PKG_VERSION="3.4.3RC1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="11-12-2012" +PKG_REL_DATE="11-13-2012" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2012-11-13 16:28:04 UTC (rev 2471) +++ nagioscore/branches/nagios-3-4-x/configure.in 2012-11-13 16:49:49 UTC (rev 2472) @@ -11,7 +11,7 @@ PKG_NAME=nagios PKG_VERSION="3.4.3RC1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="11-12-2012" +PKG_REL_DATE="11-13-2012" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2012-11-13 16:28:04 UTC (rev 2471) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2012-11-13 16:49:49 UTC (rev 2472) @@ -23,7 +23,7 @@ #include "shared.h" #define PROGRAM_VERSION "3.4.3RC1" -#define PROGRAM_MODIFICATION_DATE "11-12-2012" +#define PROGRAM_MODIFICATION_DATE "11-13-2012" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/include/downtime.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/downtime.h 2012-11-13 16:28:04 UTC (rev 2471) +++ nagioscore/branches/nagios-3-4-x/include/downtime.h 2012-11-13 16:49:49 UTC (rev 2472) @@ -52,6 +52,8 @@ unsigned long comment_id; int start_flex_downtime; int incremented_pending_downtime; +// int start_event; +// int stop_event; #endif struct scheduled_downtime_struct *next; } scheduled_downtime; Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2012-11-13 16:28:04 UTC (rev 2471) +++ nagioscore/branches/nagios-3-4-x/update-version 2012-11-13 16:49:49 UTC (rev 2472) @@ -13,7 +13,7 @@ CURRENTVERSION=3.4.3RC1 # Last date -LASTDATE=11-12-2012 +LASTDATE=11-13-2012 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2012-11-30 16:58:37
|
Revision: 2499 http://nagios.svn.sourceforge.net/nagios/?rev=2499&view=rev Author: estanley375 Date: 2012-11-30 16:58:25 +0000 (Fri, 30 Nov 2012) Log Message: ----------- Updated release to 3.4.3 Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/Changelog 2012-11-30 16:58:25 UTC (rev 2499) @@ -1,15 +1,13 @@ ##################### Nagios 3.x Change Log ##################### -3.4.3 - ??? ------------------ + +3.4.3 - 11/30/2012 +------------------ - Reverted squeue changes intended for Nagios 4 - Reapplied all patches from 3.4.2 release - Applied fix for pagination and sorting on status.cgi #381 (Phil Randal) - - - 3.4.2 - 11/09/2012 ------------------ FIXES Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2012-11-30 16:58:25 UTC (rev 2499) @@ -3,7 +3,7 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.4.3RC1 + * Version: 3.4.3 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2012-11-30 16:58:25 UTC (rev 2499) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.4.3RC1 + * Version: 3.4.3 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/configure 2012-11-30 16:58:25 UTC (rev 2499) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.4.3RC1" +PKG_VERSION="3.4.3" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="11-13-2012" +PKG_REL_DATE="11-30-2012" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/configure.in 2012-11-30 16:58:25 UTC (rev 2499) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.4.3RC1" +PKG_VERSION="3.4.3" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="11-13-2012" +PKG_REL_DATE="11-30-2012" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2012-11-30 16:58:25 UTC (rev 2499) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.4.3RC1" -#define PROGRAM_MODIFICATION_DATE "11-13-2012" +#define PROGRAM_VERSION "3.4.3" +#define PROGRAM_MODIFICATION_DATE "11-30-2012" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2012-11-30 16:58:25 UTC (rev 2499) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.4.3RC1 +%define version 3.4.3 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2012-11-30 14:52:15 UTC (rev 2498) +++ nagioscore/branches/nagios-3-4-x/update-version 2012-11-30 16:58:25 UTC (rev 2499) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.4.3RC1 +CURRENTVERSION=3.4.3 # Last date -LASTDATE=11-13-2012 +LASTDATE=11-30-2012 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2012-12-28 11:54:43
|
Revision: 2550 http://nagios.svn.sourceforge.net/nagios/?rev=2550&view=rev Author: estanley375 Date: 2012-12-28 11:54:32 +0000 (Fri, 28 Dec 2012) Log Message: ----------- Fixed bug #401: segmentation fault on Solaris when parsing unknown timeperiod directives. Previously the end of the function xodtemplate_parse_timeperiod_directive was referencing a pointer after it had been freed (and NULLed). This has been corrected. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/xdata/xodtemplate.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2012-12-21 17:27:04 UTC (rev 2549) +++ nagioscore/branches/nagios-3-4-x/Changelog 2012-12-28 11:54:32 UTC (rev 2550) @@ -4,6 +4,7 @@ 3.4.4 - xx/xx/xxxx ------------------ +* Fixed bug #401: segmentation fault on Solaris when parsing unknown timeperiod directives. (Eric Stanley) * Added NULL pointer checks to CGI code. (Eric Stanley) * Fixed buffer overflow vulnerability in CGI code. Thanks to Neohapsis (http://archives.neohapsis.com/archives/fulldisclosure/2012-12/0108.html) for finding this. (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/xdata/xodtemplate.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xodtemplate.c 2012-12-21 17:27:04 UTC (rev 2549) +++ nagioscore/branches/nagios-3-4-x/xdata/xodtemplate.c 2012-12-28 11:54:32 UTC (rev 2550) @@ -4009,17 +4009,16 @@ else result = ERROR; - /* free memory */ - my_free(input); - - if(result == ERROR) { #ifdef NSCORE + if(result == ERROR) { printf("Error: Could not parse timeperiod directive '%s'!\n", input); -#endif - return ERROR; } +#endif - return OK; + /* free memory */ + my_free(input); + + return result; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2012-12-31 12:30:31
|
Revision: 2552 http://nagios.svn.sourceforge.net/nagios/?rev=2552&view=rev Author: estanley375 Date: 2012-12-31 12:30:24 +0000 (Mon, 31 Dec 2012) Log Message: ----------- Changed check results utility functions to accept list pointer. In order to make the check results utility functions more generic, they have been changed to accept a check results list pointer rather than using the global check_results_list. This will enable these function to be used to manipulate temporary lists without impacting the system's global list of check results. This change is being made in anticipation of implementing a function to see which checks are still executing at a Nagios restart so those checks are not rescheduled incorrectly as a result of the restart. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/base/checks.c nagioscore/branches/nagios-3-4-x/base/utils.c nagioscore/branches/nagios-3-4-x/include/nagios.h Modified: nagioscore/branches/nagios-3-4-x/base/checks.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/checks.c 2012-12-28 11:56:53 UTC (rev 2551) +++ nagioscore/branches/nagios-3-4-x/base/checks.c 2012-12-31 12:30:24 UTC (rev 2552) @@ -151,7 +151,7 @@ process_check_result_queue(check_result_path); /* read all check results that have come in... */ - while((queued_check_result = read_check_result())) { + while((queued_check_result = read_check_result(&check_result_list))) { reaped_checks++; Modified: nagioscore/branches/nagios-3-4-x/base/utils.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/utils.c 2012-12-28 11:56:53 UTC (rev 2551) +++ nagioscore/branches/nagios-3-4-x/base/utils.c 2012-12-31 12:30:24 UTC (rev 2552) @@ -2281,7 +2281,7 @@ continue; /* process the file */ - result = process_check_result_file(file); + result = process_check_result_file(file, &check_result_list); /* break out if we encountered an error */ if(result == ERROR) @@ -2299,7 +2299,7 @@ /* reads check result(s) from a file */ -int process_check_result_file(char *fname) { +int process_check_result_file(char *fname, check_result **listp) { mmapfile *thefile = NULL; char *input = NULL; char *var = NULL; @@ -2349,7 +2349,7 @@ if(new_cr->host_name != NULL && new_cr->output != NULL) { /* add check result to list in memory */ - add_check_result_to_list(new_cr); + add_check_result_to_list(listp, new_cr); /* reset pointer */ new_cr = NULL; @@ -2444,7 +2444,7 @@ if(new_cr->host_name != NULL && new_cr->output != NULL) { /* add check result to list in memory */ - add_check_result_to_list(new_cr); + add_check_result_to_list(listp, new_cr); /* reset pointer */ new_cr = NULL; @@ -2491,14 +2491,14 @@ /* reads the first host/service check result from the list in memory */ -check_result *read_check_result(void) { +check_result *read_check_result(check_result **listp) { check_result *first_cr = NULL; - if(check_result_list == NULL) + if(*listp == NULL) return NULL; - first_cr = check_result_list; - check_result_list = check_result_list->next; + first_cr = *listp; + *listp = (*listp)->next; return first_cr; } @@ -2539,7 +2539,7 @@ /* adds a new host/service check result to the list in memory */ -int add_check_result_to_list(check_result *new_cr) { +int add_check_result_to_list(check_result **listp, check_result *new_cr) { check_result *temp_cr = NULL; check_result *last_cr = NULL; @@ -2549,8 +2549,8 @@ /* add to list, sorted by finish time (asc) */ /* find insertion point */ - last_cr = check_result_list; - for(temp_cr = check_result_list; temp_cr != NULL; temp_cr = temp_cr->next) { + last_cr = *listp; + for(temp_cr = *listp; temp_cr != NULL; temp_cr = temp_cr->next) { if(temp_cr->finish_time.tv_sec >= new_cr->finish_time.tv_sec) { if(temp_cr->finish_time.tv_sec > new_cr->finish_time.tv_sec) break; @@ -2561,9 +2561,9 @@ } /* item goes at head of list */ - if(check_result_list == NULL || temp_cr == check_result_list) { - new_cr->next = check_result_list; - check_result_list = new_cr; + if(*listp == NULL || temp_cr == *listp) { + new_cr->next = *listp; + *listp = new_cr; } /* item goes in middle or at end of list */ @@ -2579,17 +2579,17 @@ /* frees all memory associated with the check result list */ -int free_check_result_list(void) { +int free_check_result_list(check_result **listp) { check_result *this_cr = NULL; check_result *next_cr = NULL; - for(this_cr = check_result_list; this_cr != NULL; this_cr = next_cr) { + for(this_cr = *listp; this_cr != NULL; this_cr = next_cr) { next_cr = this_cr->next; free_check_result(this_cr); my_free(this_cr); } - check_result_list = NULL; + *listp = NULL; return OK; } @@ -3998,7 +3998,7 @@ free_comment_data(); /* free check result list */ - free_check_result_list(); + free_check_result_list(&check_result_list); /* free memory for the high priority event list */ this_event = event_list_high; Modified: nagioscore/branches/nagios-3-4-x/include/nagios.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/nagios.h 2012-12-28 11:56:53 UTC (rev 2551) +++ nagioscore/branches/nagios-3-4-x/include/nagios.h 2012-12-31 12:30:24 UTC (rev 2552) @@ -441,11 +441,11 @@ /**** IPC Functions ****/ int move_check_result_to_queue(char *); int process_check_result_queue(char *); -int process_check_result_file(char *); -int add_check_result_to_list(check_result *); -check_result *read_check_result(void); /* reads a host/service check result from the list in memory */ +int process_check_result_file(char *, check_result **); +int add_check_result_to_list(check_result **, check_result *); +check_result *read_check_result(check_result **); /* reads a host/service check result from the list in memory */ int delete_check_result_file(char *); -int free_check_result_list(void); +int free_check_result_list(check_result **); int init_check_result(check_result *); int free_check_result(check_result *); /* frees memory associated with a host/service check result */ int parse_check_output(char *, char **, char **, char **, int, int); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-01-03 21:10:35
|
Revision: 2554 http://nagios.svn.sourceforge.net/nagios/?rev=2554&view=rev Author: estanley375 Date: 2013-01-03 21:10:27 +0000 (Thu, 03 Jan 2013) Log Message: ----------- Fixed bug #408 - service checks get duplicated on reload. If a check is still running when Nagios is restarted or reloaded (via SIGHUP), Nagios will now look for running checks and mark them as executing. Then, when the checks are scheduled before the execution loop starts, the running checks will be not be rescheduled. They will be rescheduled as usual when their results are reaped. This commit also re-introduces the extra event debug logging that was unintentionally removed between versions 3.4.2 and 3.4.3. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/base/events.c nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/utils.c nagioscore/branches/nagios-3-4-x/include/nagios.h Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-01-02 14:18:04 UTC (rev 2553) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-01-03 21:10:27 UTC (rev 2554) @@ -4,6 +4,7 @@ 3.4.4 - xx/xx/xxxx ------------------ +* Fixed bug #408: service checks get duplicated on reload (Eric Stanley) * Fixed bug #401: segmentation fault on Solaris when parsing unknown timeperiod directives. (Eric Stanley) * Added NULL pointer checks to CGI code. (Eric Stanley) * Fixed buffer overflow vulnerability in CGI code. Thanks to Neohapsis (http://archives.neohapsis.com/archives/fulldisclosure/2012-12/0108.html) for finding this. (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/base/events.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/events.c 2013-01-02 14:18:04 UTC (rev 2553) +++ nagioscore/branches/nagios-3-4-x/base/events.c 2013-01-03 21:10:27 UTC (rev 2554) @@ -348,6 +348,14 @@ continue; } + /* skip services whose checks are currently executing */ + if(temp_service->is_executing) { + log_debug_info(DEBUGL_EVENTS, 2, + "Service check '%s' on host '%s' is already executing.\n", + temp_service->description, temp_service->host_name); + continue; + } + /* * skip services that are already scheduled for the (near) * future from retention data, but reschedule ones that @@ -407,6 +415,10 @@ /* update status of all services (scheduled or not) */ update_service_status(temp_service, FALSE); + /* skip services whose checks are currently executing */ + if(temp_service->is_executing) + continue; + /* skip most services that shouldn't be scheduled */ if(temp_service->should_be_scheduled == FALSE) { @@ -416,6 +428,9 @@ } /* create a new service check event */ + log_debug_info(DEBUGL_EVENTS, 2, + "Scheduling check for service '%s' on host '%s'.\n", + temp_service->description, temp_service->host_name); schedule_new_event(EVENT_SERVICE_CHECK, FALSE, temp_service->next_check, FALSE, 0, NULL, TRUE, (void *)temp_service, NULL, temp_service->check_options); } @@ -505,6 +520,13 @@ continue; } + /* skip hosts whose checks are currently executing */ + if(temp_host->is_executing) { + log_debug_info(DEBUGL_EVENTS, 2, + "Host check %s is already executing.\n", temp_host->name); + continue; + } + /* skip hosts that are already scheduled for the future (from retention data), but reschedule ones that were supposed to be checked before we started */ if(temp_host->next_check > current_time) { log_debug_info(DEBUGL_EVENTS, 2, "Host is already scheduled to be checked in the future: %s\n", ctime(&temp_host->next_check)); @@ -543,6 +565,10 @@ /* update status of all hosts (scheduled or not) */ update_host_status(temp_host, FALSE); + /* skip hosts whose checks are currently executing */ + if(temp_host->is_executing) + continue; + /* skip most hosts that shouldn't be scheduled */ if(temp_host->should_be_scheduled == FALSE) { @@ -552,6 +578,8 @@ } /* schedule a new host check event */ + log_debug_info(DEBUGL_EVENTS, 2, "Scheduling check for host '%s'.\n", + temp_host->name); schedule_new_event(EVENT_HOST_CHECK, FALSE, temp_host->next_check, FALSE, 0, NULL, TRUE, (void *)temp_host, NULL, temp_host->check_options); } @@ -768,8 +796,28 @@ timed_event **event_list_tail = NULL; timed_event *new_event = NULL; + char run_time_string[MAX_DATETIME_LENGTH] = ""; + log_debug_info(DEBUGL_FUNCTIONS, 0, "schedule_new_event()\n"); + get_datetime_string(&run_time, run_time_string, MAX_DATETIME_LENGTH, + SHORT_DATE_TIME); + log_debug_info(DEBUGL_EVENTS, 0, "New Event Details:\n"); + log_debug_info(DEBUGL_EVENTS, 0, " Type: %s\n", + EVENT_TYPE_STR( event_type)); + log_debug_info(DEBUGL_EVENTS, 0, " High Priority: %s\n", + ( high_priority ? "Yes" : "No")); + log_debug_info(DEBUGL_EVENTS, 0, " Run Time: %s\n", + run_time_string); + log_debug_info(DEBUGL_EVENTS, 0, " Recurring: %s\n", + ( recurring ? "Yes" : "No")); + log_debug_info(DEBUGL_EVENTS, 0, " Event Interval: %lu\n", + event_interval); + log_debug_info(DEBUGL_EVENTS, 0, " Compensate for Time Change: %s\n", + ( compensate_for_time_change ? "Yes" : "No")); + log_debug_info(DEBUGL_EVENTS, 0, " Event Options: %d\n", + event_options); + if(high_priority == TRUE) { event_list = &event_list_high; event_list_tail = &event_list_high_tail; @@ -1232,7 +1280,7 @@ broker_timed_event(NEBTYPE_TIMEDEVENT_EXECUTE, NEBFLAG_NONE, NEBATTR_NONE, event, NULL); #endif - log_debug_info(DEBUGL_EVENTS, 0, "** Timed Event ** Type: %d, Run Time: %s", event->event_type, ctime(&event->run_time)); + log_debug_info(DEBUGL_EVENTS, 0, "** Timed Event ** Type: %s, Run Time: %s", EVENT_TYPE_STR(event->event_type), ctime(&event->run_time)); /* how should we handle the event? */ switch(event->event_type) { Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-01-02 14:18:04 UTC (rev 2553) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-01-03 21:10:27 UTC (rev 2554) @@ -814,6 +814,10 @@ /* initialize performance data */ initialize_performance_data(config_file); + /* Determine which checks are still executing so they are not + scheduled when the timing loop is initialized */ + find_executing_checks(check_result_path); + /* initialize the event timing loop */ init_timing_loop(); Modified: nagioscore/branches/nagios-3-4-x/base/utils.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/utils.c 2013-01-02 14:18:04 UTC (rev 2553) +++ nagioscore/branches/nagios-3-4-x/base/utils.c 2013-01-03 21:10:27 UTC (rev 2554) @@ -2284,7 +2284,8 @@ continue; /* process the file */ - result = process_check_result_file(file, &check_result_list); + result = process_check_result_file(file, &check_result_list, + TRUE, TRUE); /* break out if we encountered an error */ if(result == ERROR) @@ -2301,14 +2302,142 @@ +/* Find checks that are currently executing. This function is intended to + be used on a Nagios restart to prevent currently executing checks from + being rescheduled. */ +int find_executing_checks(char *dirname) { + char file[MAX_FILENAME_LENGTH]; + DIR *dirp = NULL; + struct dirent *dirfile = NULL; + int x = 0; + struct stat stat_buf; + int result = OK; + check_result *crl = NULL; + check_result *cr = NULL; + service *svc = NULL; + host *host = NULL; + time_t current_time; + + log_debug_info(DEBUGL_FUNCTIONS, 0, "find_executing_checks() start\n"); + + /* make sure we have what we need */ + if(dirname == NULL) { + logit(NSLOG_CONFIG_ERROR, TRUE, "Error: No check directory specified.\n"); + return ERROR; + } + + /* open the directory for reading */ + if((dirp = opendir(dirname)) == NULL) { + logit(NSLOG_CONFIG_ERROR, TRUE, "Error: Could not open check directory '%s' for reading.\n", dirname); + return ERROR; + } + + log_debug_info(DEBUGL_CHECKS, 1, "Starting to read check directory '%s'...\n", dirname); + + /* process all files in the directory... */ + while((dirfile = readdir(dirp)) != NULL) { + + /* create /path/to/file */ + snprintf(file, sizeof(file), "%s/%s", dirname, dirfile->d_name); + file[sizeof(file) - 1] = '\x0'; + + /* process this if it's a check result file... */ + x = strlen(dirfile->d_name); + if(x == 11 && !strncmp( dirfile->d_name, "check", 5)) { + + if(stat(file, &stat_buf) == -1) { + logit(NSLOG_RUNTIME_WARNING, TRUE, "Warning: Could not stat() check status '%s'.\n", file); + continue; + } + + switch(stat_buf.st_mode & S_IFMT) { + + case S_IFREG: + /* don't process symlinked files */ + if(!S_ISREG(stat_buf.st_mode)) + continue; + break; + + default: + /* everything else we ignore */ + continue; + break; + } + + /* at this point we have a regular file... */ + log_debug_info(DEBUGL_CHECKS, 2, + "Looking for still-executing checks in %s.\n", file); + + /* process the file */ + result = process_check_result_file(file, &crl, FALSE, FALSE); + + /* break out if we encountered an error */ + if(result == ERROR) + break; + + time(¤t_time); + + /* examine the check results */ + while(( cr = read_check_result(&crl)) != NULL) { + if( HOST_CHECK == cr->object_check_type) { + log_debug_info(DEBUGL_CHECKS, 2, + "Determining whether check for host '%s' is still executing.\n", + cr->host_name); + if((host = find_host(cr->host_name)) == NULL) { + logit(NSLOG_RUNTIME_WARNING, TRUE, + "Warning: Check status contained host '%s', " + "but the host could not be found! Ignoring " + "check.\n", cr->host_name); + } + if( current_time - cr->start_time.tv_sec < + host_check_timeout) { + log_debug_info(DEBUGL_CHECKS, 1, + "Check for host %s is still executing.\n", + cr->host_name); + host->is_executing = TRUE; + } + } + else if( SERVICE_CHECK == cr->object_check_type) { + log_debug_info(DEBUGL_CHECKS, 2, + "Determining whether check for service '%s' on host '%s' isstill executing.\n", + cr->host_name, cr->service_description); + if((svc = find_service(cr->host_name, + cr->service_description)) == NULL) { + logit(NSLOG_RUNTIME_WARNING, TRUE, + "Warning: Check status contained service '%s' " + "on host '%s', but the service could not be " + "found! Ignoring check.\n", + cr->service_description, cr->host_name); + } + if( current_time - cr->start_time.tv_sec < + service_check_timeout) { + log_debug_info(DEBUGL_CHECKS, 1, + "Check for service %s:%s is still executing.\n", + cr->host_name, cr->service_description); + svc->is_executing = TRUE; + } + } + free_check_result_list(&crl); + } + } + } + + closedir(dirp); + + return result; + + } + + + + /* reads check result(s) from a file */ -int process_check_result_file(char *fname, check_result **listp) { +int process_check_result_file(char *fname, check_result **listp, int delete_file, int need_output) { mmapfile *thefile = NULL; char *input = NULL; char *var = NULL; char *val = NULL; char *v1 = NULL, *v2 = NULL; - int delete_file = FALSE; time_t current_time; check_result *new_cr = NULL; @@ -2349,7 +2478,8 @@ if(new_cr) { /* do we have the minimum amount of data? */ - if(new_cr->host_name != NULL && new_cr->output != NULL) { + if(new_cr->host_name != NULL && + ( !need_output || new_cr->output != NULL)) { /* add check result to list in memory */ add_check_result_to_list(listp, new_cr); @@ -2444,7 +2574,8 @@ if(new_cr) { /* do we have the minimum amount of data? */ - if(new_cr->host_name != NULL && new_cr->output != NULL) { + if(new_cr->host_name != NULL && + ( !need_output || new_cr->output != NULL)) { /* add check result to list in memory */ add_check_result_to_list(listp, new_cr); @@ -2465,9 +2596,9 @@ my_free(input); mmap_fclose(thefile); - /* delete the file (as well its ok-to-go file) if it's too old */ - /* other (current) files are deleted later (when results are processed) */ - delete_check_result_file(fname); + /* delete the file (as well its ok-to-go file) if they exist */ + if(TRUE == delete_file) + delete_check_result_file(fname); return OK; } Modified: nagioscore/branches/nagios-3-4-x/include/nagios.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/nagios.h 2013-01-02 14:18:04 UTC (rev 2553) +++ nagioscore/branches/nagios-3-4-x/include/nagios.h 2013-01-03 21:10:27 UTC (rev 2554) @@ -245,6 +245,28 @@ #define EVENT_SLEEP 98 /* asynchronous sleep event that occurs when event queues are empty */ #define EVENT_USER_FUNCTION 99 /* USER-defined function (modules) */ +#define EVENT_TYPE_STR( type) ( \ + type == EVENT_SERVICE_CHECK ? "EVENT_SERVICE_CHECK" : \ + type == EVENT_COMMAND_CHECK ? "EVENT_COMMAND_CHECK" : \ + type == EVENT_LOG_ROTATION ? "EVENT_LOG_ROTATION" : \ + type == EVENT_PROGRAM_SHUTDOWN ? "EVENT_PROGRAM_SHUTDOWN" : \ + type == EVENT_PROGRAM_RESTART ? "EVENT_PROGRAM_RESTART" : \ + type == EVENT_CHECK_REAPER ? "EVENT_CHECK_REAPER" : \ + type == EVENT_ORPHAN_CHECK ? "EVENT_ORPHAN_CHECK" : \ + type == EVENT_RETENTION_SAVE ? "EVENT_RETENTION_SAVE" : \ + type == EVENT_STATUS_SAVE ? "EVENT_STATUS_SAVE" : \ + type == EVENT_SCHEDULED_DOWNTIME ? "EVENT_SCHEDULED_DOWNTIME" : \ + type == EVENT_SFRESHNESS_CHECK ? "EVENT_SFRESHNESS_CHECK" : \ + type == EVENT_EXPIRE_DOWNTIME ? "EVENT_EXPIRE_DOWNTIME" : \ + type == EVENT_HOST_CHECK ? "EVENT_HOST_CHECK" : \ + type == EVENT_HFRESHNESS_CHECK ? "EVENT_HFRESHNESS_CHECK" : \ + type == EVENT_RESCHEDULE_CHECKS ? "EVENT_RESCHEDULE_CHECKS" : \ + type == EVENT_EXPIRE_COMMENT ? "EVENT_EXPIRE_COMMENT" : \ + type == EVENT_CHECK_PROGRAM_UPDATE ? "EVENT_CHECK_PROGRAM_UPDATE" : \ + type == EVENT_SLEEP ? "EVENT_SLEEP" : \ + type == EVENT_USER_FUNCTION ? "EVENT_USER_FUNCTION" : \ + "UNKNOWN_EVENT_TYPE" \ +) /******* INTER-CHECK DELAY CALCULATION TYPES **********/ @@ -441,7 +463,8 @@ /**** IPC Functions ****/ int move_check_result_to_queue(char *); int process_check_result_queue(char *); -int process_check_result_file(char *, check_result **); +int find_executing_checks(char *); +int process_check_result_file(char *, check_result **, int, int); int add_check_result_to_list(check_result **, check_result *); check_result *read_check_result(check_result **); /* reads a host/service check result from the list in memory */ int delete_check_result_file(char *); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-01-04 21:21:02
|
Revision: 2555 http://nagios.svn.sourceforge.net/nagios/?rev=2555&view=rev Author: estanley375 Date: 2013-01-04 21:20:54 +0000 (Fri, 04 Jan 2013) Log Message: ----------- Updated version for 3.4.4-rc1 release candidate Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-01-03 21:10:27 UTC (rev 2554) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-01-04 21:20:54 UTC (rev 2555) @@ -3,7 +3,7 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.4.3 + * Version: 3.4.4-rc1 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-01-03 21:10:27 UTC (rev 2554) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-01-04 21:20:54 UTC (rev 2555) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.4.3 + * Version: 3.4.4-rc1 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2013-01-03 21:10:27 UTC (rev 2554) +++ nagioscore/branches/nagios-3-4-x/configure 2013-01-04 21:20:54 UTC (rev 2555) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.4.3" +PKG_VERSION="3.4.4-rc1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="11-30-2012" +PKG_REL_DATE="01-04-2013" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2013-01-03 21:10:27 UTC (rev 2554) +++ nagioscore/branches/nagios-3-4-x/configure.in 2013-01-04 21:20:54 UTC (rev 2555) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.4.3" +PKG_VERSION="3.4.4-rc1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="11-30-2012" +PKG_REL_DATE="01-04-2013" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2013-01-03 21:10:27 UTC (rev 2554) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2013-01-04 21:20:54 UTC (rev 2555) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.4.3" -#define PROGRAM_MODIFICATION_DATE "11-30-2012" +#define PROGRAM_VERSION "3.4.4-rc1" +#define PROGRAM_MODIFICATION_DATE "01-04-2013" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2013-01-03 21:10:27 UTC (rev 2554) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2013-01-04 21:20:54 UTC (rev 2555) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.4.3 +%define version 3.4.4-rc1 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2013-01-03 21:10:27 UTC (rev 2554) +++ nagioscore/branches/nagios-3-4-x/update-version 2013-01-04 21:20:54 UTC (rev 2555) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.4.3 +CURRENTVERSION=3.4.4-rc1 # Last date -LASTDATE=11-30-2012 +LASTDATE=01-04-2013 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-01-12 13:21:57
|
Revision: 2571 http://nagios.svn.sourceforge.net/nagios/?rev=2571&view=rev Author: estanley375 Date: 2013-01-12 13:21:46 +0000 (Sat, 12 Jan 2013) Log Message: ----------- Updated revision to 3.4.4 Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-01-12 13:21:46 UTC (rev 2571) @@ -2,8 +2,9 @@ Nagios 3.x Change Log ##################### -3.4.4 - xx/xx/xxxx +3.4.4 - 01/12/2013 ------------------ +* Reenabled check for newer versions of Nagios Core (Mike Guthrie) * Fixed bug #408: service checks get duplicated on reload (Eric Stanley) * Fixed bug #401: segmentation fault on Solaris when parsing unknown timeperiod directives. (Eric Stanley) * Added NULL pointer checks to CGI code. (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-01-12 13:21:46 UTC (rev 2571) @@ -3,7 +3,7 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.4.4-rc1 + * Version: 3.4.4 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-01-12 13:21:46 UTC (rev 2571) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.4.4-rc1 + * Version: 3.4.4 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/configure 2013-01-12 13:21:46 UTC (rev 2571) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.4.4-rc1" +PKG_VERSION="3.4.4" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="01-04-2013" +PKG_REL_DATE="01-12-2013" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/configure.in 2013-01-12 13:21:46 UTC (rev 2571) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.4.4-rc1" +PKG_VERSION="3.4.4" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="01-04-2013" +PKG_REL_DATE="01-12-2013" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2013-01-12 13:21:46 UTC (rev 2571) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.4.4-rc1" -#define PROGRAM_MODIFICATION_DATE "01-04-2013" +#define PROGRAM_VERSION "3.4.4" +#define PROGRAM_MODIFICATION_DATE "01-12-2013" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2013-01-12 13:21:46 UTC (rev 2571) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.4.4-rc1 +%define version 3.4.4 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2013-01-11 12:19:24 UTC (rev 2570) +++ nagioscore/branches/nagios-3-4-x/update-version 2013-01-12 13:21:46 UTC (rev 2571) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.4.4-rc1 +CURRENTVERSION=3.4.4 # Last date -LASTDATE=01-04-2013 +LASTDATE=01-12-2013 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-02-09 23:55:55
|
Revision: 2600 http://nagios.svn.sourceforge.net/nagios/?rev=2600&view=rev Author: estanley375 Date: 2013-02-09 23:55:47 +0000 (Sat, 09 Feb 2013) Log Message: ----------- Fixed bug #418: Scheduled Downtime Notifications Resent On Nagios Restart/reload This was accomplished by adding a member to the downtime structure which records whether the start-of-downwtime notification has been sent. This is also recorded in the status.dat and retention.dat files, the latter so it can be read back in on Nagios restart. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/common/downtime.c nagioscore/branches/nagios-3-4-x/include/downtime.h nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c nagioscore/branches/nagios-3-4-x/xdata/xdddefault.h nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c Modified: nagioscore/branches/nagios-3-4-x/common/downtime.c =================================================================== --- nagioscore/branches/nagios-3-4-x/common/downtime.c 2013-02-06 16:12:21 UTC (rev 2599) +++ nagioscore/branches/nagios-3-4-x/common/downtime.c 2013-02-09 23:55:47 UTC (rev 2600) @@ -116,7 +116,7 @@ /* add a new downtime entry */ - add_new_downtime(type, host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, &downtime_id, FALSE); + add_new_downtime(type, host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, &downtime_id, FALSE, FALSE); /* register the scheduled downtime */ register_downtime(type, downtime_id); @@ -542,7 +542,10 @@ logit(NSLOG_INFO_MESSAGE, FALSE, "HOST DOWNTIME ALERT: %s;STARTED; Host has entered a period of scheduled downtime", hst->name); /* send a notification */ - host_notification(hst, NOTIFICATION_DOWNTIMESTART, temp_downtime->author, temp_downtime->comment, NOTIFICATION_OPTION_NONE); + if( FALSE == temp_downtime->start_notification_sent) { + host_notification(hst, NOTIFICATION_DOWNTIMESTART, temp_downtime->author, temp_downtime->comment, NOTIFICATION_OPTION_NONE); + temp_downtime->start_notification_sent = TRUE; + } } else if(temp_downtime->type == SERVICE_DOWNTIME && svc->scheduled_downtime_depth == 0) { @@ -553,7 +556,10 @@ logit(NSLOG_INFO_MESSAGE, FALSE, "SERVICE DOWNTIME ALERT: %s;%s;STARTED; Service has entered a period of scheduled downtime", svc->host_name, svc->description); /* send a notification */ - service_notification(svc, NOTIFICATION_DOWNTIMESTART, temp_downtime->author, temp_downtime->comment, NOTIFICATION_OPTION_NONE); + if( FALSE == temp_downtime->start_notification_sent) { + service_notification(svc, NOTIFICATION_DOWNTIMESTART, temp_downtime->author, temp_downtime->comment, NOTIFICATION_OPTION_NONE); + temp_downtime->start_notification_sent = TRUE; + } } /* increment the downtime depth variable */ @@ -746,20 +752,20 @@ /* save a host or service downtime */ -int add_new_downtime(int type, char *host_name, char *service_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id,int is_in_effect){ +int add_new_downtime(int type, char *host_name, char *service_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect, int start_notification_sent){ int result = OK; if(type == HOST_DOWNTIME) - result = add_new_host_downtime(host_name, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + result = add_new_host_downtime(host_name, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); else - result = add_new_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + result = add_new_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); return result; } /* saves a host downtime entry */ -int add_new_host_downtime(char *host_name, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect){ +int add_new_host_downtime(char *host_name, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect, int start_notification_sent){ int result = OK; unsigned long new_downtime_id = 0L; @@ -768,7 +774,7 @@ /**** IMPLEMENTATION-SPECIFIC CALLS ****/ #ifdef USE_XDDDEFAULT - result = xdddefault_add_new_host_downtime(host_name, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, &new_downtime_id, is_in_effect); + result = xdddefault_add_new_host_downtime(host_name, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, &new_downtime_id, is_in_effect, start_notification_sent); #endif /* save downtime id */ @@ -785,7 +791,7 @@ /* saves a service downtime entry */ -int add_new_service_downtime(char *host_name, char *service_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect){ +int add_new_service_downtime(char *host_name, char *service_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect, int start_notification_sent){ int result = OK; unsigned long new_downtime_id = 0L; @@ -794,7 +800,7 @@ /**** IMPLEMENTATION-SPECIFIC CALLS ****/ #ifdef USE_XDDDEFAULT - result = xdddefault_add_new_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, &new_downtime_id, is_in_effect); + result = xdddefault_add_new_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, end_time, fixed, triggered_by, duration, &new_downtime_id, is_in_effect, start_notification_sent); #endif /* save downtime id */ @@ -959,27 +965,27 @@ /******************************************************************/ /* adds a host downtime entry to the list in memory */ -int add_host_downtime(char *host_name, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ +int add_host_downtime(char *host_name, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect, int start_notification_sent){ int result = OK; - result = add_downtime(HOST_DOWNTIME, host_name, NULL, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + result = add_downtime(HOST_DOWNTIME, host_name, NULL, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); return result; } /* adds a service downtime entry to the list in memory */ -int add_service_downtime(char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ +int add_service_downtime(char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect, int start_notification_sent){ int result = OK; - result = add_downtime(SERVICE_DOWNTIME, host_name, svc_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + result = add_downtime(SERVICE_DOWNTIME, host_name, svc_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); return result; } /* adds a host or service downtime entry to the list in memory */ -int add_downtime(int downtime_type, char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect){ +int add_downtime(int downtime_type, char *host_name, char *svc_description, time_t entry_time, char *author, char *comment_data, time_t start_time, time_t flex_downtime_start, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long downtime_id, int is_in_effect, int start_notification_sent){ scheduled_downtime *new_downtime = NULL; scheduled_downtime *last_downtime = NULL; scheduled_downtime *temp_downtime = NULL; @@ -1052,6 +1058,7 @@ new_downtime->duration = duration; new_downtime->downtime_id = downtime_id; new_downtime->is_in_effect=is_in_effect; + new_downtime->start_notification_sent=start_notification_sent; if(defer_downtime_sorting) { new_downtime->next = scheduled_downtime_list; Modified: nagioscore/branches/nagios-3-4-x/include/downtime.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/downtime.h 2013-02-06 16:12:21 UTC (rev 2599) +++ nagioscore/branches/nagios-3-4-x/include/downtime.h 2013-02-09 23:55:47 UTC (rev 2600) @@ -46,6 +46,7 @@ unsigned long duration; unsigned long downtime_id; int is_in_effect; + int start_notification_sent; char *author; char *comment; #ifdef NSCORE @@ -64,9 +65,9 @@ int initialize_downtime_data(char *); /* initializes scheduled downtime data */ int cleanup_downtime_data(char *); /* cleans up scheduled downtime data */ -int add_new_downtime(int, char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int); -int add_new_host_downtime(char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int); -int add_new_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int); +int add_new_downtime(int, char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int, int); +int add_new_host_downtime(char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int, int); +int add_new_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int, int); int delete_host_downtime(unsigned long); int delete_service_downtime(unsigned long); @@ -85,15 +86,15 @@ int check_for_expired_downtime(void); #endif -int add_host_downtime(char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); -int add_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); +int add_host_downtime(char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int, int); +int add_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int, int); /* If you are going to be adding a lot of downtime in sequence, set defer_downtime_sorting to 1 before you start and then call sort_downtime afterwards. Things will go MUCH faster. */ extern int defer_downtime_sorting; -int add_downtime(int, char *, char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int); +int add_downtime(int, char *, char *, time_t, char *, char *, time_t, time_t, time_t, int, unsigned long, unsigned long, unsigned long, int, int); int sort_downtime(void); scheduled_downtime *find_downtime(int, unsigned long); Modified: nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c 2013-02-06 16:12:21 UTC (rev 2599) +++ nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c 2013-02-09 23:55:47 UTC (rev 2600) @@ -195,14 +195,14 @@ /******************************************************************/ /* adds a new scheduled host downtime entry */ -int xdddefault_add_new_host_downtime(char *host_name, time_t entry_time, char *author, char *comment, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect){ +int xdddefault_add_new_host_downtime(char *host_name, time_t entry_time, char *author, char *comment, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect, int start_notification_sent){ /* find the next valid downtime id */ while(find_host_downtime(next_downtime_id) != NULL) next_downtime_id++; /* add downtime to list in memory */ - add_host_downtime(host_name, entry_time, author, comment, start_time, (time_t)0, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect); + add_host_downtime(host_name, entry_time, author, comment, start_time, (time_t)0, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect, start_notification_sent); /* update downtime file */ xdddefault_save_downtime_data(); @@ -220,14 +220,14 @@ /* adds a new scheduled service downtime entry */ -int xdddefault_add_new_service_downtime(char *host_name, char *service_description, time_t entry_time, char *author, char *comment, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect){ +int xdddefault_add_new_service_downtime(char *host_name, char *service_description, time_t entry_time, char *author, char *comment, time_t start_time, time_t end_time, int fixed, unsigned long triggered_by, unsigned long duration, unsigned long *downtime_id, int is_in_effect, int start_notification_sent){ /* find the next valid downtime id */ while(find_service_downtime(next_downtime_id) != NULL) next_downtime_id++; /* add downtime to list in memory */ - add_service_downtime(host_name, service_description, entry_time, author, comment, start_time, (time_t)0, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect); + add_service_downtime(host_name, service_description, entry_time, author, comment, start_time, (time_t)0, end_time, fixed, triggered_by, duration, next_downtime_id, is_in_effect, start_notification_sent); /* update downtime file */ xdddefault_save_downtime_data(); Modified: nagioscore/branches/nagios-3-4-x/xdata/xdddefault.h =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xdddefault.h 2013-02-06 16:12:21 UTC (rev 2599) +++ nagioscore/branches/nagios-3-4-x/xdata/xdddefault.h 2013-02-09 23:55:47 UTC (rev 2600) @@ -36,8 +36,8 @@ int xdddefault_cleanup_downtime_data(char *); int xdddefault_save_downtime_data(void); -int xdddefault_add_new_host_downtime(char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int); -int xdddefault_add_new_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int); +int xdddefault_add_new_host_downtime(char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int, int); +int xdddefault_add_new_service_downtime(char *, char *, time_t, char *, char *, time_t, time_t, int, unsigned long, unsigned long, unsigned long *, int, int); int xdddefault_delete_host_downtime(unsigned long); int xdddefault_delete_service_downtime(unsigned long); Modified: nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c 2013-02-06 16:12:21 UTC (rev 2599) +++ nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c 2013-02-09 23:55:47 UTC (rev 2600) @@ -561,6 +561,7 @@ fprintf(fp, "fixed=%d\n", temp_downtime->fixed); fprintf(fp, "duration=%lu\n", temp_downtime->duration); fprintf(fp, "is_in_effect=%d\n", temp_downtime->is_in_effect); + fprintf(fp, "start_notification_sent=%d\n", temp_downtime->start_notification_sent); fprintf(fp, "author=%s\n", temp_downtime->author); fprintf(fp, "comment=%s\n", temp_downtime->comment); fprintf(fp, "}\n"); @@ -661,6 +662,7 @@ double runtime[2]; int found_directive = FALSE; int is_in_effect = FALSE; + int start_notification_sent = FALSE; log_debug_info(DEBUGL_FUNCTIONS, 0, "xrddefault_read_state_information() start\n"); @@ -965,9 +967,9 @@ /* add the downtime */ if(data_type == XRDDEFAULT_HOSTDOWNTIME_DATA) - add_host_downtime(host_name, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_host_downtime(host_name, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); else - add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); /* must register the downtime with Nagios so it can schedule it, add comments, etc. */ register_downtime((data_type == XRDDEFAULT_HOSTDOWNTIME_DATA) ? HOST_DOWNTIME : SERVICE_DOWNTIME, downtime_id); @@ -1846,6 +1848,8 @@ triggered_by = strtoul(val, NULL, 10); else if(!strcmp(var, "is_in_effect")) is_in_effect = (atoi(val) > 0) ? TRUE : FALSE; + else if(!strcmp(var, "start_notification_sent")) + start_notification_sent = (atoi(val) > 0) ? TRUE : FALSE; else if(!strcmp(var, "duration")) duration = strtoul(val, NULL, 10); else if(!strcmp(var, "author")) Modified: nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c =================================================================== --- nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c 2013-02-06 16:12:21 UTC (rev 2599) +++ nagioscore/branches/nagios-3-4-x/xdata/xsddefault.c 2013-02-09 23:55:47 UTC (rev 2600) @@ -671,6 +671,7 @@ fprintf(fp, "\tfixed=%d\n", temp_downtime->fixed); fprintf(fp, "\tduration=%lu\n", temp_downtime->duration); fprintf(fp, "\tis_in_effect=%d\n", temp_downtime->is_in_effect); + fprintf(fp, "\tstart_notification_sent=%d\n", temp_downtime->start_notification_sent); fprintf(fp, "\tauthor=%s\n", temp_downtime->author); fprintf(fp, "\tcomment=%s\n", temp_downtime->comment); fprintf(fp, "\t}\n\n"); @@ -765,6 +766,7 @@ unsigned long duration = 0L; int x = 0; int is_in_effect = FALSE; + int start_notification_sent = FALSE; /* initialize some vars */ @@ -891,9 +893,9 @@ /* add the downtime */ if(data_type == XSDDEFAULT_HOSTDOWNTIME_DATA) - add_host_downtime(host_name, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_host_downtime(host_name, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); else - add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect); + add_service_downtime(host_name, service_description, entry_time, author, comment_data, start_time, flex_downtime_start, end_time, fixed, triggered_by, duration, downtime_id, is_in_effect, start_notification_sent); /* free temp memory */ my_free(host_name); @@ -910,6 +912,7 @@ triggered_by = 0; duration = 0L; is_in_effect = FALSE; + start_notification_sent = FALSE; break; @@ -1276,6 +1279,8 @@ duration = strtoul(val, NULL, 10); else if(!strcmp(var, "is_in_effect")) is_in_effect = (atoi(val) > 0) ? TRUE : FALSE; + else if(!strcmp(var, "start_notification_sent")) + start_notification_sent = (atoi(val) > 0) ? TRUE : FALSE; else if(!strcmp(var, "author")) author = (char *)strdup(val); else if(!strcmp(var, "comment")) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-02-16 17:42:01
|
Revision: 2607 http://nagios.svn.sourceforge.net/nagios/?rev=2607&view=rev Author: estanley375 Date: 2013-02-16 17:41:54 +0000 (Sat, 16 Feb 2013) Log Message: ----------- Fixed bug #369: status.cgi crashes with segfault when there are german ulauts (?\195?\164?\195?\182?\195?\188?\195?\159) in the hostname or the servicename Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-02-15 12:09:59 UTC (rev 2606) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-02-16 17:41:54 UTC (rev 2607) @@ -4,6 +4,7 @@ 3.4.5 - xx/xx/xxxx ------------------ +* Fixed bug #369: status.cgi crashes with segfault when there are german ulauts (äöüß) in the hostname or the servicename * Fixed bug #418: Scheduled Downtime Notifications Resent On Nagios Restart/reload (Eric Stanley) 3.4.4 - 01/12/2013 Modified: nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c 2013-02-15 12:09:59 UTC (rev 2606) +++ nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c 2013-02-16 17:41:54 UTC (rev 2607) @@ -944,7 +944,7 @@ else { str[y] = '\x0'; if((int)strlen(str) < (output_len - 3)) { - sprintf(temp_expansion, "%%%02X", (unsigned int)input[x]); + sprintf(temp_expansion, "%%%02X", (unsigned char)input[x]); strcat(str, temp_expansion); y += 3; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-02-22 19:29:45
|
Revision: 2626 http://nagios.svn.sourceforge.net/nagios/?rev=2626&view=rev Author: estanley375 Date: 2013-02-22 19:29:34 +0000 (Fri, 22 Feb 2013) Log Message: ----------- Update version number for 3.4.5rc1 Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-02-22 19:14:56 UTC (rev 2625) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-02-22 19:29:34 UTC (rev 2626) @@ -3,7 +3,7 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.4.4 + * Version: 3.4.5rc1 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-02-22 19:14:56 UTC (rev 2625) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-02-22 19:29:34 UTC (rev 2626) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.4.4 + * Version: 3.4.5rc1 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2013-02-22 19:14:56 UTC (rev 2625) +++ nagioscore/branches/nagios-3-4-x/configure 2013-02-22 19:29:34 UTC (rev 2626) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.4.4" +PKG_VERSION="3.4.5rc1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="01-12-2013" +PKG_REL_DATE="02-22-2013" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2013-02-22 19:14:56 UTC (rev 2625) +++ nagioscore/branches/nagios-3-4-x/configure.in 2013-02-22 19:29:34 UTC (rev 2626) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.4.4" +PKG_VERSION="3.4.5rc1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="01-12-2013" +PKG_REL_DATE="02-22-2013" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2013-02-22 19:14:56 UTC (rev 2625) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2013-02-22 19:29:34 UTC (rev 2626) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.4.4" -#define PROGRAM_MODIFICATION_DATE "01-12-2013" +#define PROGRAM_VERSION "3.4.5rc1" +#define PROGRAM_MODIFICATION_DATE "02-22-2013" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2013-02-22 19:14:56 UTC (rev 2625) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2013-02-22 19:29:34 UTC (rev 2626) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.4.4 +%define version 3.4.5rc1 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2013-02-22 19:14:56 UTC (rev 2625) +++ nagioscore/branches/nagios-3-4-x/update-version 2013-02-22 19:29:34 UTC (rev 2626) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.4.4 +CURRENTVERSION=3.4.5rc1 # Last date -LASTDATE=01-12-2013 +LASTDATE=02-22-2013 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-02-27 01:37:39
|
Revision: 2631 http://nagios.svn.sourceforge.net/nagios/?rev=2631&view=rev Author: estanley375 Date: 2013-02-27 01:37:32 +0000 (Wed, 27 Feb 2013) Log Message: ----------- Fixed bug #403: The configuration page of the webui doesn't use entity encoding when displaying the command expansion item Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/cgi/config.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-02-26 16:27:19 UTC (rev 2630) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-02-27 01:37:32 UTC (rev 2631) @@ -4,6 +4,7 @@ 3.4.5 - xx/xx/xxxx ------------------ +* Fixed bug #403: The "configuration" page of the webui doesn't use entity encoding when displaying the "command expansion" item (Eric Stanley) * Fixed bug #424: Nagios Core 3.4.4 seg fault (core dump) on restart after removing config for running service (Eric Stanley) * Updated CGI utility functions to support UTF-8 characters (Eric Stanley) * Fixed bug where selecting Command Expansion from Configuration CGI page would display commands instead (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/cgi/config.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/config.c 2013-02-26 16:27:19 UTC (rev 2630) +++ nagioscore/branches/nagios-3-4-x/cgi/config.c 2013-02-27 01:37:32 UTC (rev 2631) @@ -2293,7 +2293,7 @@ printf("<TR CLASS='dataEven'><TD CLASS='dataEven'>To expand:</TD><TD CLASS='dataEven'>%s", escape_string(command_args[0])); for(i = 1; (i < MAX_COMMAND_ARGUMENTS) && command_args[i]; i++) - printf("!<FONT\n COLOR='%s'>%s</FONT>", hash_color(i), command_args[i]); + printf("!<FONT\n COLOR='%s'>%s</FONT>", hash_color(i), escape_string(command_args[i])); printf("\n</TD></TR>\n"); /* check all commands */ @@ -2427,6 +2427,7 @@ } } + printf("<TR CLASS='dataEven'><TD><BR/></TD><TD CLASS='dataEven'>Enter the command_check definition from a host or service definition and press Go to see the expansion of the command</TD></TR>\n"); printf("<TR CLASS='dataEven'><TD CLASS='dataEven'>To expand:</TD><TD CLASS='dataEven'><FORM\n"); printf("METHOD='GET' ACTION='%s'><INPUT TYPE='HIDDEN' NAME='type' VALUE='command'><INPUT\n", CONFIG_CGI); printf("TYPE='text' NAME='expand' SIZE='100%%' VALUE='%s'>\n", html_encode(to_expand, FALSE)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-02-28 11:30:56
|
Revision: 2644 http://nagios.svn.sourceforge.net/nagios/?rev=2644&view=rev Author: estanley375 Date: 2013-02-28 11:30:47 +0000 (Thu, 28 Feb 2013) Log Message: ----------- Update version number for 3.5.0rc1 Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-02-28 11:30:47 UTC (rev 2644) @@ -2,7 +2,7 @@ Nagios 3.x Change Log ##################### -3.4.5 - xx/xx/xxxx +3.5.0 - xx/xx/xxxx ------------------ * Fixed bug #403: The "configuration" page of the webui doesn't use entity encoding when displaying the "command expansion" item (Eric Stanley) * Fixed bug #424: Nagios Core 3.4.4 seg fault (core dump) on restart after removing config for running service (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-02-28 11:30:47 UTC (rev 2644) @@ -3,7 +3,7 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.4.5rc1 + * Version: 3.5.0rc1 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-02-28 11:30:47 UTC (rev 2644) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.4.5rc1 + * Version: 3.5.0rc1 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/configure 2013-02-28 11:30:47 UTC (rev 2644) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.4.5rc1" +PKG_VERSION="3.5.0rc1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="02-22-2013" +PKG_REL_DATE="02-28-2013" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/configure.in 2013-02-28 11:30:47 UTC (rev 2644) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.4.5rc1" +PKG_VERSION="3.5.0rc1" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="02-22-2013" +PKG_REL_DATE="02-28-2013" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2013-02-28 11:30:47 UTC (rev 2644) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.4.5rc1" -#define PROGRAM_MODIFICATION_DATE "02-22-2013" +#define PROGRAM_VERSION "3.5.0rc1" +#define PROGRAM_MODIFICATION_DATE "02-28-2013" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2013-02-28 11:30:47 UTC (rev 2644) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.4.5rc1 +%define version 3.5.0rc1 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2013-02-27 14:50:10 UTC (rev 2643) +++ nagioscore/branches/nagios-3-4-x/update-version 2013-02-28 11:30:47 UTC (rev 2644) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.4.5rc1 +CURRENTVERSION=3.5.0rc1 # Last date -LASTDATE=02-22-2013 +LASTDATE=02-28-2013 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-03-09 21:12:54
|
Revision: 2652 http://nagios.svn.sourceforge.net/nagios/?rev=2652&view=rev Author: estanley375 Date: 2013-03-09 21:12:46 +0000 (Sat, 09 Mar 2013) Log Message: ----------- Fixed logic issue in html_encode() when not escaping HTML. Thanks to Phil Randal for point it out. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-03-06 13:54:46 UTC (rev 2651) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-03-09 21:12:46 UTC (rev 2652) @@ -4,7 +4,7 @@ 3.5.0 - xx/xx/xxxx ------------------ -* Fixed bug #403: The "configuration" page of the webui doesn't use entity encoding when displaying the "command expansion" item (Eric Stanley) +* Fixed bug #403: The "configuration" page of the webui doesn't use entity encoding when displaying the "command expansion" item (Eric Stanley, Phil Randal) * Fixed bug #424: Nagios Core 3.4.4 seg fault (core dump) on restart after removing config for running service (Eric Stanley) * Updated CGI utility functions to support UTF-8 characters (Eric Stanley) * Fixed bug where selecting Command Expansion from Configuration CGI page would display commands instead (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c 2013-03-06 13:54:46 UTC (rev 2651) +++ nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c 2013-03-09 21:12:46 UTC (rev 2652) @@ -1053,9 +1053,21 @@ } } + /* When not escaping HTML tags, don't encode quotes or ampersands + (left and right carets are handled above */ + else if((escape_html_tags == FALSE) && ( '"' == *inwcp || + '&' == *inwcp || '\'' == *inwcp)) { + wctomb_result = wctomb( mbtemp, *inwcp); + if(( wctomb_result > 0) && + ((( outstp - encoded_html_string) + wctomb_result) < output_max)) { + strncpy( outstp, mbtemp, wctomb_result); + outstp += wctomb_result; + } + } + /* for simplicity, all other chars represented by their numeric value */ else { - sprintf( temp_expansion, "&#%u", *( unsigned int *)inwcp); + sprintf( temp_expansion, "&#%u;", *( unsigned int *)inwcp); if((( outstp - encoded_html_string) + strlen( temp_expansion)) < output_max) { strncpy( outstp, temp_expansion, strlen( temp_expansion)); @@ -1154,7 +1166,7 @@ /* Encode everything else (this may be excessive) */ else { - sprintf( temp_expansion, "&#%u", ( unsigned int)wctemp[ 0]); + sprintf( temp_expansion, "&#%u;", ( unsigned int)wctemp[ 0]); if((( stp - encoded_html_string) + strlen( temp_expansion)) < output_max) { strncpy( stp, temp_expansion, strlen( temp_expansion)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-03-09 21:46:45
|
Revision: 2653 http://nagios.svn.sourceforge.net/nagios/?rev=2653&view=rev Author: estanley375 Date: 2013-03-09 21:46:35 +0000 (Sat, 09 Mar 2013) Log Message: ----------- Results of running indent-all.sh Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/base/checks.c nagioscore/branches/nagios-3-4-x/base/config.c nagioscore/branches/nagios-3-4-x/base/events.c nagioscore/branches/nagios-3-4-x/base/logging.c nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/notifications.c nagioscore/branches/nagios-3-4-x/base/utils.c nagioscore/branches/nagios-3-4-x/cgi/cgiauth.c nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c nagioscore/branches/nagios-3-4-x/cgi/cmd.c nagioscore/branches/nagios-3-4-x/cgi/getcgi.c nagioscore/branches/nagios-3-4-x/cgi/history.c nagioscore/branches/nagios-3-4-x/cgi/status.c nagioscore/branches/nagios-3-4-x/common/comments.c nagioscore/branches/nagios-3-4-x/common/downtime.c nagioscore/branches/nagios-3-4-x/common/macros.c nagioscore/branches/nagios-3-4-x/xdata/xdddefault.c nagioscore/branches/nagios-3-4-x/xdata/xodtemplate.c nagioscore/branches/nagios-3-4-x/xdata/xpddefault.c nagioscore/branches/nagios-3-4-x/xdata/xrddefault.c Modified: nagioscore/branches/nagios-3-4-x/base/checks.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/checks.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/base/checks.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -2084,13 +2084,12 @@ * freshness threshold based on vast heuristical research (ie, "some * guy once told me the golden ratio is good for loads of stuff"). */ - if (temp_service->check_type == SERVICE_CHECK_PASSIVE) { - if (temp_service->last_check < event_start && - event_start - last_program_stop < freshness_threshold * 0.618) - { + if(temp_service->check_type == SERVICE_CHECK_PASSIVE) { + if(temp_service->last_check < event_start && + event_start - last_program_stop < freshness_threshold * 0.618) { expiration_time = event_start + freshness_threshold; + } } - } log_debug_info(DEBUGL_CHECKS, 2, "HBC: %d, PS: %lu, ES: %lu, LC: %lu, CT: %lu, ET: %lu\n", temp_service->has_been_checked, (unsigned long)program_start, (unsigned long)event_start, (unsigned long)temp_service->last_check, (unsigned long)current_time, (unsigned long)expiration_time); /* the results for the last check of this service are stale */ @@ -2223,7 +2222,7 @@ return; } - if (temp_event) { + if(temp_event) { remove_event(temp_event, &event_list_low, &event_list_low_tail); my_free(temp_event); } @@ -2495,13 +2494,12 @@ * freshness threshold based on vast heuristical research (ie, "some * guy once told me the golden ratio is good for loads of stuff"). */ - if (temp_host->check_type == HOST_CHECK_PASSIVE) { - if (temp_host->last_check < event_start && - event_start - last_program_stop > freshness_threshold * 0.618) - { + if(temp_host->check_type == HOST_CHECK_PASSIVE) { + if(temp_host->last_check < event_start && + event_start - last_program_stop > freshness_threshold * 0.618) { expiration_time = event_start + freshness_threshold; + } } - } log_debug_info(DEBUGL_CHECKS, 2, "HBC: %d, PS: %lu, ES: %lu, LC: %lu, CT: %lu, ET: %lu\n", temp_host->has_been_checked, (unsigned long)program_start, (unsigned long)event_start, (unsigned long)temp_host->last_check, (unsigned long)current_time, (unsigned long)expiration_time); Modified: nagioscore/branches/nagios-3-4-x/base/config.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/config.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/base/config.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -728,23 +728,23 @@ } } - - else if(!strcmp(variable,"service_check_timeout_state")){ - if(!strcmp(value,"o")) - service_check_timeout_state=STATE_OK; - else if(!strcmp(value,"w")) - service_check_timeout_state=STATE_WARNING; - else if(!strcmp(value,"c")) - service_check_timeout_state=STATE_CRITICAL; - else if(!strcmp(value,"u")) - service_check_timeout_state=STATE_UNKNOWN; - else{ - asprintf(&error_message,"Illegal value for service_check_timeout_state"); - error=TRUE; + else if(!strcmp(variable, "service_check_timeout_state")) { + + if(!strcmp(value, "o")) + service_check_timeout_state = STATE_OK; + else if(!strcmp(value, "w")) + service_check_timeout_state = STATE_WARNING; + else if(!strcmp(value, "c")) + service_check_timeout_state = STATE_CRITICAL; + else if(!strcmp(value, "u")) + service_check_timeout_state = STATE_UNKNOWN; + else { + asprintf(&error_message, "Illegal value for service_check_timeout_state"); + error = TRUE; break; - } } + } else if(!strcmp(variable, "host_check_timeout")) { Modified: nagioscore/branches/nagios-3-4-x/base/events.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/events.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/base/events.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -350,9 +350,9 @@ /* skip services whose checks are currently executing */ if(temp_service->is_executing) { - log_debug_info(DEBUGL_EVENTS, 2, - "Service check '%s' on host '%s' is already executing.\n", - temp_service->description, temp_service->host_name); + log_debug_info(DEBUGL_EVENTS, 2, + "Service check '%s' on host '%s' is already executing.\n", + temp_service->description, temp_service->host_name); continue; } @@ -428,9 +428,9 @@ } /* create a new service check event */ - log_debug_info(DEBUGL_EVENTS, 2, - "Scheduling check for service '%s' on host '%s'.\n", - temp_service->description, temp_service->host_name); + log_debug_info(DEBUGL_EVENTS, 2, + "Scheduling check for service '%s' on host '%s'.\n", + temp_service->description, temp_service->host_name); schedule_new_event(EVENT_SERVICE_CHECK, FALSE, temp_service->next_check, FALSE, 0, NULL, TRUE, (void *)temp_service, NULL, temp_service->check_options); } @@ -522,8 +522,8 @@ /* skip hosts whose checks are currently executing */ if(temp_host->is_executing) { - log_debug_info(DEBUGL_EVENTS, 2, - "Host check %s is already executing.\n", temp_host->name); + log_debug_info(DEBUGL_EVENTS, 2, + "Host check %s is already executing.\n", temp_host->name); continue; } @@ -578,8 +578,8 @@ } /* schedule a new host check event */ - log_debug_info(DEBUGL_EVENTS, 2, "Scheduling check for host '%s'.\n", - temp_host->name); + log_debug_info(DEBUGL_EVENTS, 2, "Scheduling check for host '%s'.\n", + temp_host->name); schedule_new_event(EVENT_HOST_CHECK, FALSE, temp_host->next_check, FALSE, 0, NULL, TRUE, (void *)temp_host, NULL, temp_host->check_options); } @@ -801,22 +801,22 @@ log_debug_info(DEBUGL_FUNCTIONS, 0, "schedule_new_event()\n"); get_datetime_string(&run_time, run_time_string, MAX_DATETIME_LENGTH, - SHORT_DATE_TIME); + SHORT_DATE_TIME); log_debug_info(DEBUGL_EVENTS, 0, "New Event Details:\n"); log_debug_info(DEBUGL_EVENTS, 0, " Type: %s\n", - EVENT_TYPE_STR( event_type)); + EVENT_TYPE_STR(event_type)); log_debug_info(DEBUGL_EVENTS, 0, " High Priority: %s\n", - ( high_priority ? "Yes" : "No")); + (high_priority ? "Yes" : "No")); log_debug_info(DEBUGL_EVENTS, 0, " Run Time: %s\n", - run_time_string); + run_time_string); log_debug_info(DEBUGL_EVENTS, 0, " Recurring: %s\n", - ( recurring ? "Yes" : "No")); + (recurring ? "Yes" : "No")); log_debug_info(DEBUGL_EVENTS, 0, " Event Interval: %lu\n", - event_interval); + event_interval); log_debug_info(DEBUGL_EVENTS, 0, " Compensate for Time Change: %s\n", - ( compensate_for_time_change ? "Yes" : "No")); + (compensate_for_time_change ? "Yes" : "No")); log_debug_info(DEBUGL_EVENTS, 0, " Event Options: %d\n", - event_options); + event_options); if(high_priority == TRUE) { event_list = &event_list_high; @@ -947,7 +947,7 @@ log_debug_info(DEBUGL_FUNCTIONS, 0, "remove_event()\n"); - if (!event) + if(!event) return; #ifdef USE_EVENT_BROKER @@ -960,18 +960,18 @@ prev_event = event->prev; next_event = event->next; - if (prev_event) { + if(prev_event) { prev_event->next = next_event; } - if (next_event) { + if(next_event) { next_event->prev = prev_event; } - if (!prev_event) { + if(!prev_event) { /* no previous event, so "next" is now first in list */ *event_list = next_event; } - if (!next_event) { + if(!next_event) { /* no following event, so "prev" is now last in list */ *event_list_tail = prev_event; } Modified: nagioscore/branches/nagios-3-4-x/base/logging.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/logging.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/base/logging.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -61,32 +61,35 @@ static pthread_mutex_t debug_fp_lock; /* These simple helpers should most likely be elsewhere */ -static const char *service_state_name(int state) -{ - switch (state) { - case STATE_OK: return "OK"; - case STATE_WARNING: return "WARNING"; - case STATE_CRITICAL: return "CRITICAL"; - } +static const char *service_state_name(int state) { + switch(state) { + case STATE_OK: + return "OK"; + case STATE_WARNING: + return "WARNING"; + case STATE_CRITICAL: + return "CRITICAL"; + } return "UNKNOWN"; -} - -static const char *host_state_name(int state) -{ - switch (state) { - case HOST_UP: return "UP"; - case HOST_DOWN: return "DOWN"; - case HOST_UNREACHABLE: return "UNREACHABLE"; } +static const char *host_state_name(int state) { + switch(state) { + case HOST_UP: + return "UP"; + case HOST_DOWN: + return "DOWN"; + case HOST_UNREACHABLE: + return "UNREACHABLE"; + } + return "(unknown)"; -} + } -static const char *state_type_name(int state_type) -{ +static const char *state_type_name(int state_type) { return state_type == HARD_STATE ? "HARD" : "SOFT"; -} + } /* * since we don't want child processes to hang indefinitely @@ -292,11 +295,11 @@ return ERROR; asprintf(&temp_buffer, "SERVICE ALERT: %s;%s;%s;%s;%d;%s\n", - svc->host_name, svc->description, - service_state_name(svc->current_state), - state_type_name(svc->state_type), - svc->current_attempt, - (svc->plugin_output == NULL) ? "" : svc->plugin_output); + svc->host_name, svc->description, + service_state_name(svc->current_state), + state_type_name(svc->state_type), + svc->current_attempt, + (svc->plugin_output == NULL) ? "" : svc->plugin_output); write_to_all_logs(temp_buffer, log_options); @@ -318,11 +321,11 @@ log_options = NSLOG_HOST_UP; asprintf(&temp_buffer, "HOST ALERT: %s;%s;%s;%d;%s\n", - hst->name, - host_state_name(hst->current_state), - state_type_name(hst->state_type), - hst->current_attempt, - (hst->plugin_output == NULL) ? "" : hst->plugin_output); + hst->name, + host_state_name(hst->current_state), + state_type_name(hst->state_type), + hst->current_attempt, + (hst->plugin_output == NULL) ? "" : hst->plugin_output); write_to_all_logs(temp_buffer, log_options); @@ -344,11 +347,11 @@ for(temp_host = host_list; temp_host != NULL; temp_host = temp_host->next) { asprintf(&temp_buffer, "%s HOST STATE: %s;%s;%s;%d;%s\n", (type == INITIAL_STATES) ? "INITIAL" : "CURRENT", - temp_host->name, - host_state_name(temp_host->current_state), - state_type_name(temp_host->state_type), - temp_host->current_attempt, - (temp_host->plugin_output == NULL) ? "" : temp_host->plugin_output); + temp_host->name, + host_state_name(temp_host->current_state), + state_type_name(temp_host->state_type), + temp_host->current_attempt, + (temp_host->plugin_output == NULL) ? "" : temp_host->plugin_output); write_to_all_logs_with_timestamp(temp_buffer, NSLOG_INFO_MESSAGE, timestamp); @@ -376,12 +379,12 @@ continue; asprintf(&temp_buffer, "%s SERVICE STATE: %s;%s;%s;%s;%d;%s\n", - (type == INITIAL_STATES) ? "INITIAL" : "CURRENT", - temp_service->host_name, temp_service->description, - service_state_name(temp_service->current_state), - state_type_name(temp_service->state_type), - temp_service->current_attempt, - temp_service->plugin_output); + (type == INITIAL_STATES) ? "INITIAL" : "CURRENT", + temp_service->host_name, temp_service->description, + service_state_name(temp_service->current_state), + state_type_name(temp_service->state_type), + temp_service->current_attempt, + temp_service->plugin_output); write_to_all_logs_with_timestamp(temp_buffer, NSLOG_INFO_MESSAGE, timestamp); @@ -502,10 +505,10 @@ if(debug_level == DEBUGL_NONE) return OK; - if( chown(debug_file, uid, gid) < 0) { - logit(NSLOG_RUNTIME_WARNING, TRUE, - "Failed to change ownership on debug log: %s.", - strerror( errno)); + if(chown(debug_file, uid, gid) < 0) { + logit(NSLOG_RUNTIME_WARNING, TRUE, + "Failed to change ownership on debug log: %s.", + strerror(errno)); return ERROR; } Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -9,7 +9,7 @@ * Copyright (c) 1999-2009 Ethan Galstad * * First Written: 01-28-1999 (start of development) - * Last Modified: + * Last Modified: * * Description: * @@ -98,7 +98,7 @@ unsigned long syslog_options = 0; int service_check_timeout = DEFAULT_SERVICE_CHECK_TIMEOUT; -int service_check_timeout_state=STATE_CRITICAL; +int service_check_timeout_state = STATE_CRITICAL; int host_check_timeout = DEFAULT_HOST_CHECK_TIMEOUT; int event_handler_timeout = DEFAULT_EVENT_HANDLER_TIMEOUT; int notification_timeout = DEFAULT_NOTIFICATION_TIMEOUT; Modified: nagioscore/branches/nagios-3-4-x/base/notifications.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/notifications.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/base/notifications.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -128,7 +128,7 @@ /* create the contact notification list for this service */ - /* 2011-11-01 MF: + /* 2011-11-01 MF: check viability before adding a contact to the notification list, requires type this prevents us from running through all @@ -975,10 +975,10 @@ if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; /* check now if the contact can be notified */ - if (check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) + if(check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) add_notification(mac, temp_contact); else - log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n",temp_contact->name); + log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); } log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Adding members of contact groups from service escalation(s) to notification list.\n"); @@ -992,10 +992,10 @@ if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; /* check now if the contact can be notified */ - if (check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) + if(check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) add_notification(mac, temp_contact); else - log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n",temp_contact->name); + log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); } } } @@ -1011,10 +1011,10 @@ if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; /* check now if the contact can be notified */ - if (check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) - add_notification(mac, temp_contact); - else - log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n",temp_contact->name); + if(check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) + add_notification(mac, temp_contact); + else + log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); } /* add all contacts that belong to contactgroups for this service */ @@ -1025,11 +1025,11 @@ for(temp_contactsmember = temp_contactgroup->members; temp_contactsmember != NULL; temp_contactsmember = temp_contactsmember->next) { if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; - /* check now if the contact can be notified */ - if (check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) - add_notification(mac, temp_contact); - else - log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n",temp_contact->name); + /* check now if the contact can be notified */ + if(check_contact_service_notification_viability(temp_contact, svc, type, options) == OK) + add_notification(mac, temp_contact); + else + log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); } } } @@ -1107,7 +1107,7 @@ /* reset memory for local macro data */ memset(&mac, 0, sizeof(mac)); - /* 2011-11-01 MF: + /* 2011-11-01 MF: check viability before adding a contact to the notification list, requires type this prevents us from running through all @@ -1912,7 +1912,7 @@ if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; /* check now if the contact can be notified */ - if (check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) + if(check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) add_notification(mac, temp_contact); else log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); @@ -1928,11 +1928,11 @@ for(temp_contactsmember = temp_contactgroup->members; temp_contactsmember != NULL; temp_contactsmember = temp_contactsmember->next) { if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; - /* check now if the contact can be notified */ - if (check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) - add_notification(mac, temp_contact); - else - log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); + /* check now if the contact can be notified */ + if(check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) + add_notification(mac, temp_contact); + else + log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); } } } @@ -1949,11 +1949,11 @@ for(temp_contactsmember = hst->contacts; temp_contactsmember != NULL; temp_contactsmember = temp_contactsmember->next) { if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; - /* check now if the contact can be notified */ - if (check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) - add_notification(mac, temp_contact); - else - log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); + /* check now if the contact can be notified */ + if(check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) + add_notification(mac, temp_contact); + else + log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); } log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Adding members of contact groups for host to notification list.\n"); @@ -1967,11 +1967,11 @@ for(temp_contactsmember = temp_contactgroup->members; temp_contactsmember != NULL; temp_contactsmember = temp_contactsmember->next) { if((temp_contact = temp_contactsmember->contact_ptr) == NULL) continue; - /* check now if the contact can be notified */ - if (check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) - add_notification(mac, temp_contact); - else - log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); + /* check now if the contact can be notified */ + if(check_contact_host_notification_viability(temp_contact, hst, type, options) == OK) + add_notification(mac, temp_contact); + else + log_debug_info(DEBUGL_NOTIFICATIONS, 2, "Not adding contact '%s'\n", temp_contact->name); } } } Modified: nagioscore/branches/nagios-3-4-x/base/utils.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/utils.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/base/utils.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -2136,7 +2136,7 @@ } #endif /* Change the ownership on the debug log file */ - chown_debug_log( uid, gid); + chown_debug_log(uid, gid); if(setuid(uid) == -1) { logit(NSLOG_RUNTIME_WARNING, TRUE, "Warning: Could not set effective UID=%d", (int)uid); @@ -2284,8 +2284,8 @@ continue; /* process the file */ - result = process_check_result_file(file, &check_result_list, - TRUE, TRUE); + result = process_check_result_file(file, &check_result_list, + TRUE, TRUE); /* break out if we encountered an error */ if(result == ERROR) @@ -2302,7 +2302,7 @@ -/* Find checks that are currently executing. This function is intended to +/* Find checks that are currently executing. This function is intended to be used on a Nagios restart to prevent currently executing checks from being rescheduled. */ int find_executing_checks(char *dirname) { @@ -2343,7 +2343,7 @@ /* process this if it's a check result file... */ x = strlen(dirfile->d_name); - if(x == 11 && !strncmp( dirfile->d_name, "check", 5)) { + if(x == 11 && !strncmp(dirfile->d_name, "check", 5)) { if(stat(file, &stat_buf) == -1) { logit(NSLOG_RUNTIME_WARNING, TRUE, "Warning: Could not stat() check status '%s'.\n", file); @@ -2365,8 +2365,8 @@ } /* at this point we have a regular file... */ - log_debug_info(DEBUGL_CHECKS, 2, - "Looking for still-executing checks in %s.\n", file); + log_debug_info(DEBUGL_CHECKS, 2, + "Looking for still-executing checks in %s.\n", file); /* process the file */ result = process_check_result_file(file, &crl, FALSE, FALSE); @@ -2378,42 +2378,42 @@ time(¤t_time); /* examine the check results */ - while(( cr = read_check_result(&crl)) != NULL) { - if( HOST_CHECK == cr->object_check_type) { - log_debug_info(DEBUGL_CHECKS, 2, - "Determining whether check for host '%s' is still executing.\n", - cr->host_name); + while((cr = read_check_result(&crl)) != NULL) { + if(HOST_CHECK == cr->object_check_type) { + log_debug_info(DEBUGL_CHECKS, 2, + "Determining whether check for host '%s' is still executing.\n", + cr->host_name); if((host = find_host(cr->host_name)) == NULL) { - logit(NSLOG_RUNTIME_WARNING, TRUE, - "Warning: Check status contained host '%s', " - "but the host could not be found! Ignoring " - "check.\n", cr->host_name); + logit(NSLOG_RUNTIME_WARNING, TRUE, + "Warning: Check status contained host '%s', " + "but the host could not be found! Ignoring " + "check.\n", cr->host_name); } - else if( current_time - cr->start_time.tv_sec < - host_check_timeout) { - log_debug_info(DEBUGL_CHECKS, 1, - "Check for host %s is still executing.\n", - cr->host_name); + else if(current_time - cr->start_time.tv_sec < + host_check_timeout) { + log_debug_info(DEBUGL_CHECKS, 1, + "Check for host %s is still executing.\n", + cr->host_name); host->is_executing = TRUE; } } - else if( SERVICE_CHECK == cr->object_check_type) { - log_debug_info(DEBUGL_CHECKS, 2, - "Determining whether check for service '%s' on host '%s' is still executing.\n", - cr->host_name, cr->service_description); - if((svc = find_service(cr->host_name, - cr->service_description)) == NULL) { - logit(NSLOG_RUNTIME_WARNING, TRUE, - "Warning: Check status contained service '%s' " - "on host '%s', but the service could not be " - "found! Ignoring check.\n", - cr->service_description, cr->host_name); + else if(SERVICE_CHECK == cr->object_check_type) { + log_debug_info(DEBUGL_CHECKS, 2, + "Determining whether check for service '%s' on host '%s' is still executing.\n", + cr->host_name, cr->service_description); + if((svc = find_service(cr->host_name, + cr->service_description)) == NULL) { + logit(NSLOG_RUNTIME_WARNING, TRUE, + "Warning: Check status contained service '%s' " + "on host '%s', but the service could not be " + "found! Ignoring check.\n", + cr->service_description, cr->host_name); } - else if( current_time - cr->start_time.tv_sec < - service_check_timeout) { - log_debug_info(DEBUGL_CHECKS, 1, - "Check for service %s:%s is still executing.\n", - cr->host_name, cr->service_description); + else if(current_time - cr->start_time.tv_sec < + service_check_timeout) { + log_debug_info(DEBUGL_CHECKS, 1, + "Check for service %s:%s is still executing.\n", + cr->host_name, cr->service_description); svc->is_executing = TRUE; } } @@ -2478,8 +2478,8 @@ if(new_cr) { /* do we have the minimum amount of data? */ - if(new_cr->host_name != NULL && - ( !need_output || new_cr->output != NULL)) { + if(new_cr->host_name != NULL && + (!need_output || new_cr->output != NULL)) { /* add check result to list in memory */ add_check_result_to_list(listp, new_cr); @@ -2574,8 +2574,8 @@ if(new_cr) { /* do we have the minimum amount of data? */ - if(new_cr->host_name != NULL && - ( !need_output || new_cr->output != NULL)) { + if(new_cr->host_name != NULL && + (!need_output || new_cr->output != NULL)) { /* add check result to list in memory */ add_check_result_to_list(listp, new_cr); @@ -3259,10 +3259,10 @@ return FALSE; /* grab the first line - we should see Perl. go home if not */ - if (fgets(buf, 80, fp) == NULL || strstr(buf, "/bin/perl") == NULL) { + if(fgets(buf, 80, fp) == NULL || strstr(buf, "/bin/perl") == NULL) { fclose(fp); return FALSE; - } + } /* epn directives must be found in first ten lines of plugin */ for(line = 1; line < 10; line++) { @@ -3275,7 +3275,7 @@ if(strstr(buf, "# nagios:")) { char *p; p = strstr(buf + 8, "epn"); - if (!p) + if(!p) continue; /* @@ -4135,7 +4135,7 @@ /* free memory for the high priority event list */ this_event = event_list_high; while(this_event != NULL) { - if (this_event->event_type == EVENT_SCHEDULED_DOWNTIME) + if(this_event->event_type == EVENT_SCHEDULED_DOWNTIME) my_free(this_event->event_data); next_event = this_event->next; my_free(this_event); @@ -4148,7 +4148,7 @@ /* free memory for the low priority event list */ this_event = event_list_low; while(this_event != NULL) { - if (this_event->event_type == EVENT_SCHEDULED_DOWNTIME) + if(this_event->event_type == EVENT_SCHEDULED_DOWNTIME) my_free(this_event->event_data); next_event = this_event->next; my_free(this_event); Modified: nagioscore/branches/nagios-3-4-x/cgi/cgiauth.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/cgiauth.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/cgi/cgiauth.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -336,7 +336,7 @@ if(is_authorized_for_service(temp_service, authinfo) == TRUE) return TRUE; } - + /*return TRUE*/; return FALSE; } Modified: nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/cgi/cgiutils.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -329,8 +329,8 @@ else if(!strcmp(var, "refresh_rate")) refresh_rate = atoi(val); - - /* page limit added 2/1/2012 -MG */ + + /* page limit added 2/1/2012 -MG */ else if(!strcmp(var, "result_limit")) result_limit = atoi(val); @@ -374,11 +374,11 @@ snprintf(url_media_path, sizeof(url_media_path), "%smedia/", url_html_path); url_media_path[sizeof(url_media_path) - 1] = '\x0'; - - /* added JS directory 2/1/2012 -MG */ + + /* added JS directory 2/1/2012 -MG */ snprintf(url_js_path, sizeof(url_js_path), "%sjs/", url_html_path); url_js_path[sizeof(url_js_path) - 1] = '\x0'; - + } else if(!strcmp(var, "service_critical_sound")) @@ -974,104 +974,104 @@ /* we need up to six times the space to do the conversion */ len = (int)strlen(input); output_max = len * 6; - if(( outstp = encoded_html_string = (char *)malloc(output_max + 1)) == NULL) + if((outstp = encoded_html_string = (char *)malloc(output_max + 1)) == NULL) return ""; strcpy(encoded_html_string, ""); /* Convert the string to a wide character string */ - if(( wcinput = malloc( len * sizeof( wchar_t))) == NULL) { + if((wcinput = malloc(len * sizeof(wchar_t))) == NULL) { return ""; } - if(( mbstowcs_result = mbstowcs( wcinput, input, len)) < 0) { - free( wcinput); + if((mbstowcs_result = mbstowcs(wcinput, input, len)) < 0) { + free(wcinput); return ""; } /* Process all converted characters */ - for( x = 0, inwcp = wcinput; x < mbstowcs_result && '\0' != *inwcp; x++, inwcp++) { + for(x = 0, inwcp = wcinput; x < mbstowcs_result && '\0' != *inwcp; x++, inwcp++) { /* Most ASCII characters don't get encoded */ - if(( *inwcp >= 0x20 && *inwcp <= 0x7e) && - ( !( '"' == *inwcp || '&' == *inwcp || '\'' == *inwcp || - '<' == *inwcp || '>' == *inwcp))) { - wctomb_result = wctomb( mbtemp, *inwcp); - if(( wctomb_result > 0) && - ((( outstp - encoded_html_string) + wctomb_result) < output_max)) { - strncpy( outstp, mbtemp, wctomb_result); + if((*inwcp >= 0x20 && *inwcp <= 0x7e) && + (!('"' == *inwcp || '&' == *inwcp || '\'' == *inwcp || + '<' == *inwcp || '>' == *inwcp))) { + wctomb_result = wctomb(mbtemp, *inwcp); + if((wctomb_result > 0) && + (((outstp - encoded_html_string) + wctomb_result) < output_max)) { + strncpy(outstp, mbtemp, wctomb_result); outstp += wctomb_result; } } /* newlines turn to <BR> tags */ else if(escape_newlines == TRUE && '\n' == *inwcp) { - strncpy( outstp, "<BR>", 4); + strncpy(outstp, "<BR>", 4); outstp += 4; } - else if(escape_newlines == TRUE && '\\' == *inwcp && '\n' == *( inwcp + 1)) { - strncpy( outstp, "<BR>", 4); + else if(escape_newlines == TRUE && '\\' == *inwcp && '\n' == *(inwcp + 1)) { + strncpy(outstp, "<BR>", 4); outstp += 4; inwcp++; /* needed so loop skips two wide characters */ } /* TODO - strip all but allowed HTML tags out... */ - else if( '<' == *inwcp) { + else if('<' == *inwcp) { if(escape_html_tags == FALSE) { - wctomb_result = wctomb( mbtemp, *inwcp); - if(( wctomb_result > 0) && - ((( outstp - encoded_html_string) + wctomb_result) < output_max)) { - strncpy( outstp, mbtemp, wctomb_result); + wctomb_result = wctomb(mbtemp, *inwcp); + if((wctomb_result > 0) && + (((outstp - encoded_html_string) + wctomb_result) < output_max)) { + strncpy(outstp, mbtemp, wctomb_result); outstp += wctomb_result; } } else { - if((( outstp - encoded_html_string) + 4) < output_max) { - strncpy( outstp, "<", 4); + if(((outstp - encoded_html_string) + 4) < output_max) { + strncpy(outstp, "<", 4); outstp += 4; } } } - else if( '>' == *inwcp) { + else if('>' == *inwcp) { if(escape_html_tags == FALSE) { - wctomb_result = wctomb( mbtemp, *inwcp); - if(( wctomb_result > 0) && - ((( outstp - encoded_html_string) + wctomb_result) < output_max)) { - strncpy( outstp, mbtemp, wctomb_result); + wctomb_result = wctomb(mbtemp, *inwcp); + if((wctomb_result > 0) && + (((outstp - encoded_html_string) + wctomb_result) < output_max)) { + strncpy(outstp, mbtemp, wctomb_result); outstp += wctomb_result; } } else { - if((( outstp - encoded_html_string) + 4) < output_max) { - strncpy( outstp, ">", 4); + if(((outstp - encoded_html_string) + 4) < output_max) { + strncpy(outstp, ">", 4); outstp += 4; } } } - /* When not escaping HTML tags, don't encode quotes or ampersands + /* When not escaping HTML tags, don't encode quotes or ampersands (left and right carets are handled above */ - else if((escape_html_tags == FALSE) && ( '"' == *inwcp || - '&' == *inwcp || '\'' == *inwcp)) { - wctomb_result = wctomb( mbtemp, *inwcp); - if(( wctomb_result > 0) && - ((( outstp - encoded_html_string) + wctomb_result) < output_max)) { - strncpy( outstp, mbtemp, wctomb_result); + else if((escape_html_tags == FALSE) && ('"' == *inwcp || + '&' == *inwcp || '\'' == *inwcp)) { + wctomb_result = wctomb(mbtemp, *inwcp); + if((wctomb_result > 0) && + (((outstp - encoded_html_string) + wctomb_result) < output_max)) { + strncpy(outstp, mbtemp, wctomb_result); outstp += wctomb_result; } } /* for simplicity, all other chars represented by their numeric value */ else { - sprintf( temp_expansion, "&#%u;", *( unsigned int *)inwcp); - if((( outstp - encoded_html_string) + strlen( temp_expansion)) < - output_max) { - strncpy( outstp, temp_expansion, strlen( temp_expansion)); - outstp += strlen( temp_expansion); + sprintf(temp_expansion, "&#%u;", *(unsigned int *)inwcp); + if(((outstp - encoded_html_string) + strlen(temp_expansion)) < + output_max) { + strncpy(outstp, temp_expansion, strlen(temp_expansion)); + outstp += strlen(temp_expansion); } } } @@ -1119,46 +1119,46 @@ char temp_expansion[10]; /* If they don't give us anything to do... */ - if( NULL == input) { + if(NULL == input) { return ""; } /* We need up to six times the space to do the conversion */ len = (int)strlen(input); output_max = len * 6; - if(( stp = encoded_html_string = (char *)malloc(output_max + 1)) == NULL) + if((stp = encoded_html_string = (char *)malloc(output_max + 1)) == NULL) return ""; strcpy(encoded_html_string, ""); /* Get the first multibyte character in the input string */ - mbtowc_result = mbtowc( wctemp, input, MB_CUR_MAX); + mbtowc_result = mbtowc(wctemp, input, MB_CUR_MAX); /* Process all characters until a null character is found */ - while( 0 != mbtowc_result) { /* 0 indicates a null character was found */ + while(0 != mbtowc_result) { /* 0 indicates a null character was found */ - if(( size_t)-2 == mbtowc_result) { + if((size_t) - 2 == mbtowc_result) { /* No complete multibyte character found - try at next memory address */ input++; } - else if((( size_t)-1 == mbtowc_result) && ( EILSEQ == errno)) { + else if(((size_t) - 1 == mbtowc_result) && (EILSEQ == errno)) { /* Invalid multibyte character found - try at next memory address */ input++; } - /* Alpha-numeric characters and a few other characters don't get + /* Alpha-numeric characters and a few other characters don't get encoded */ - else if(( *wctemp >= '0' && *wctemp <= '9') || - ( *wctemp >= 'A' && *wctemp <= 'Z') || - ( *wctemp >= 'a' && *wctemp <= 'z') || - ' ' == *wctemp || '-' == *wctemp || '.' == *wctemp || - '_' == *wctemp || ':' == *wctemp) { - wctomb_result = wctomb( mbtemp, wctemp[0]); - if(( wctomb_result > 0) && - ((( stp - encoded_html_string) + wctomb_result) < output_max)) { - strncpy( stp, mbtemp, wctomb_result); + else if((*wctemp >= '0' && *wctemp <= '9') || + (*wctemp >= 'A' && *wctemp <= 'Z') || + (*wctemp >= 'a' && *wctemp <= 'z') || + ' ' == *wctemp || '-' == *wctemp || '.' == *wctemp || + '_' == *wctemp || ':' == *wctemp) { + wctomb_result = wctomb(mbtemp, wctemp[0]); + if((wctomb_result > 0) && + (((stp - encoded_html_string) + wctomb_result) < output_max)) { + strncpy(stp, mbtemp, wctomb_result); stp += wctomb_result; } input += mbtowc_result; @@ -1166,17 +1166,17 @@ /* Encode everything else (this may be excessive) */ else { - sprintf( temp_expansion, "&#%u;", ( unsigned int)wctemp[ 0]); - if((( stp - encoded_html_string) + strlen( temp_expansion)) < - output_max) { - strncpy( stp, temp_expansion, strlen( temp_expansion)); - stp += strlen( temp_expansion); + sprintf(temp_expansion, "&#%u;", (unsigned int)wctemp[ 0]); + if(((stp - encoded_html_string) + strlen(temp_expansion)) < + output_max) { + strncpy(stp, temp_expansion, strlen(temp_expansion)); + stp += strlen(temp_expansion); } input += mbtowc_result; } /* Read the next character */ - mbtowc_result = mbtowc( wctemp, input, MB_CUR_MAX); + mbtowc_result = mbtowc(wctemp, input, MB_CUR_MAX); } /* Null terminate the encoded string */ Modified: nagioscore/branches/nagios-3-4-x/cgi/cmd.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/cmd.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/cgi/cmd.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -219,7 +219,7 @@ free_object_data(); return OK; - } + } /* if no command was specified... */ if(command_type == CMD_NONE) { Modified: nagioscore/branches/nagios-3-4-x/cgi/getcgi.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/getcgi.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/cgi/getcgi.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -129,7 +129,7 @@ /* Attempt to set the locale */ accept_language = getenv("HTTP_ACCEPT_LANGUAGE"); - process_language( accept_language); + process_language(accept_language); /* depending on the request method, read all CGI input into cgiinput */ @@ -142,7 +142,7 @@ /* check for NULL query string environment variable - 04/28/00 (Ludo Bosmans) */ if(getenv("QUERY_STRING") == NULL) { cgiinput = (char *)malloc(1); - if(cgiinput != NULL) + if(cgiinput != NULL) cgiinput[0] = '\x0'; } else @@ -227,7 +227,7 @@ nvpair = strtok(cgiinput, "&"); while(nvpair) { pairlist[paircount] = strdup(nvpair); - if( NULL == pairlist[paircount]) { + if(NULL == pairlist[paircount]) { printf("getcgivars(): Could not allocate memory for name-value pair #%d.\n", paircount); exit(1); } @@ -257,7 +257,7 @@ if((eqpos = strchr(pairlist[i], '=')) != NULL) { *eqpos = '\0'; cgivars[i * 2 + 1] = strdup(eqpos + 1); - if( NULL == cgivars[ i * 2 + 1]) { + if(NULL == cgivars[ i * 2 + 1]) { printf("getcgivars(): Could not allocate memory for cgi value #%d.\n", i); exit(1); } @@ -265,7 +265,7 @@ } else { cgivars[i * 2 + 1] = strdup(""); - if( NULL == cgivars[ i * 2 + 1]) { + if(NULL == cgivars[ i * 2 + 1]) { printf("getcgivars(): Could not allocate memory for empty stringfor variable value #%d.\n", i); exit(1); } @@ -274,7 +274,7 @@ /* get the variable value (or name/value of there was no real "pair" in the first place) */ cgivars[i * 2] = strdup(pairlist[i]); - if( NULL == cgivars[ i * 2]) { + if(NULL == cgivars[ i * 2]) { printf("getcgivars(): Could not allocate memory for cgi name #%d.\n", i); exit(1); } @@ -299,42 +299,42 @@ /* Set the locale based on the HTTP_ACCEPT_LANGUAGE variable value sent by the browser */ -void process_language( char * accept_language) { +void process_language(char * accept_language) { accept_languages *accept_langs = NULL; int x; char locale_string[ 64]; char * locale = NULL; char * locale_failsafe[] = { "en_US.utf8", "POSIX", "C" }; - if( accept_language != NULL) { - accept_langs = parse_accept_languages( accept_language); - } + if(accept_language != NULL) { + accept_langs = parse_accept_languages(accept_language); + } - if( NULL != accept_langs) { + if(NULL != accept_langs) { /* Sort the results */ - qsort( accept_langs->languages, accept_langs->count, - sizeof( accept_langs->languages[ 0]), compare_accept_languages); + qsort(accept_langs->languages, accept_langs->count, + sizeof(accept_langs->languages[ 0]), compare_accept_languages); /* Try each language in order of priority */ - for( x = 0; (( x < accept_langs->count) && ( NULL == locale)); x++) { - snprintf( locale_string, sizeof( locale_string), "%s_%s.%s", - accept_langs->languages[ x]->language, - accept_langs->languages[ x]->locality, "utf8"); - locale = setlocale( LC_ALL, locale_string); + for(x = 0; ((x < accept_langs->count) && (NULL == locale)); x++) { + snprintf(locale_string, sizeof(locale_string), "%s_%s.%s", + accept_langs->languages[ x]->language, + accept_langs->languages[ x]->locality, "utf8"); + locale = setlocale(LC_ALL, locale_string); + } + + free_accept_languages(accept_langs); } - - free_accept_languages( accept_langs); - } - if( NULL == locale) { /* Still isn't set */ + if(NULL == locale) { /* Still isn't set */ /* Try the fail safe locales */ - for( x = 0; (( x < ( sizeof( locale_failsafe) / sizeof( char *))) && - ( NULL == locale)); x++) { - locale = setlocale( LC_ALL, locale_failsafe[ x]); + for(x = 0; ((x < (sizeof(locale_failsafe) / sizeof(char *))) && + (NULL == locale)); x++) { + locale = setlocale(LC_ALL, locale_failsafe[ x]); + } } } -} -accept_languages * parse_accept_languages( char * acceptlang) { +accept_languages * parse_accept_languages(char * acceptlang) { char * langdup; /* Duplicate of accept language for parsing */ accept_languages *langs = NULL; char * langtok; /* Language token (language + locality + q value) */ @@ -346,164 +346,164 @@ /* If the browser did not pass an HTTP_ACCEPT_LANGUAGE variable, there is not much we can do */ - if( NULL == acceptlang) { + if(NULL == acceptlang) { return NULL; - } + } /* Duplicate the browser supplied HTTP_ACCEPT_LANGUAGE variable */ - if( NULL == ( langdup = strdup( acceptlang))) { - printf( "Unable to allocate memory for langdup\n"); + if(NULL == (langdup = strdup(acceptlang))) { + printf("Unable to allocate memory for langdup\n"); return NULL; - } + } /* Initialize the structure to contain the parsed HTTP_ACCEPT_LANGUAGE information */ - if( NULL == ( langs = malloc( sizeof( accept_languages)))) { - printf( "Unable to allocate memory for langs\n"); - free( langdup); + if(NULL == (langs = malloc(sizeof(accept_languages)))) { + printf("Unable to allocate memory for langs\n"); + free(langdup); return NULL; - } + } langs->count = 0; - langs->languages = ( accept_language **)NULL; + langs->languages = (accept_language **)NULL; /* Tokenize the HTTP_ACCEPT_LANGUAGE string */ - langtok = strtok_r( langdup, ",", &saveptr); - while( langtok != NULL) { + langtok = strtok_r(langdup, ",", &saveptr); + while(langtok != NULL) { /* Bump the count and allocate memory for structures */ langs->count++; - if( NULL == langs->languages) { + if(NULL == langs->languages) { /* Adding first language */ - if( NULL == ( langs->languages = - malloc( langs->count * sizeof( accept_language *)))) { - printf( "Unable to allocate memory for first language\n"); + if(NULL == (langs->languages = + malloc(langs->count * sizeof(accept_language *)))) { + printf("Unable to allocate memory for first language\n"); langs->count--; - free_accept_languages( langs); - free( langdup); + free_accept_languages(langs); + free(langdup); return NULL; + } } - } else { /* Adding additional language */ - if( NULL == ( langs->languages = realloc( langs->languages, - langs->count * sizeof( accept_language *)))) { - printf( "Unable to allocate memory for additional language\n"); + if(NULL == (langs->languages = realloc(langs->languages, + langs->count * sizeof(accept_language *)))) { + printf("Unable to allocate memory for additional language\n"); langs->count--; - free_accept_languages( langs); - free( langdup); + free_accept_languages(langs); + free(langdup); return NULL; + } } - } - if( NULL == ( langs->languages[ langs->count - 1] = - malloc( sizeof( accept_language)))) { - printf( "Unable to allocate memory for language\n"); + if(NULL == (langs->languages[ langs->count - 1] = + malloc(sizeof(accept_language)))) { + printf("Unable to allocate memory for language\n"); langs->count--; - free_accept_languages( langs); - free( langdup); + free_accept_languages(langs); + free(langdup); return NULL; - } - langs->languages[ langs->count - 1]->language = ( char *)NULL; - langs->languages[ langs->count - 1]->locality = ( char *)NULL; + } + langs->languages[ langs->count - 1]->language = (char *)NULL; + langs->languages[ langs->count - 1]->locality = (char *)NULL; langs->languages[ langs->count - 1]->q = 1.0; - + /* Check to see if there is a q value */ - qdelim = strstr( langtok, ACCEPT_LANGUAGE_Q_DELIMITER); + qdelim = strstr(langtok, ACCEPT_LANGUAGE_Q_DELIMITER); - if( NULL != qdelim) { /* found a q value */ - langs->languages[ langs->count - 1]->q = - strtod( qdelim + strlen( ACCEPT_LANGUAGE_Q_DELIMITER), NULL); + if(NULL != qdelim) { /* found a q value */ + langs->languages[ langs->count - 1]->q = + strtod(qdelim + strlen(ACCEPT_LANGUAGE_Q_DELIMITER), NULL); langtok[ qdelim - langtok] = '\0'; - } + } /* Check to see if there is a locality specifier */ - if( NULL == ( localitydelim = strchr( langtok, '-'))) { - localitydelim = strchr( langtok, '_'); - } + if(NULL == (localitydelim = strchr(langtok, '-'))) { + localitydelim = strchr(langtok, '_'); + } - if( NULL != localitydelim) { + if(NULL != localitydelim) { /* We have a locality delimiter, so copy it */ - if( NULL == ( langs->languages[ langs->count - 1]->locality = - strdup( localitydelim + 1))) { - printf( "Unable to allocate memory for locality '%s'\n", - langtok); - free_accept_languages( langs); - free( langdup); + if(NULL == (langs->languages[ langs->count - 1]->locality = + strdup(localitydelim + 1))) { + printf("Unable to allocate memory for locality '%s'\n", + langtok); + free_accept_languages(langs); + free(langdup); return NULL; - } + } /* Ensure it is upper case */ - for( x = 0, stp = langs->languages[ langs->count - 1]->locality; - x < strlen( langs->languages[ langs->count - 1]->locality); - x++, stp++) { - *stp = toupper( *stp); - } + for(x = 0, stp = langs->languages[ langs->count - 1]->locality; + x < strlen(langs->languages[ langs->count - 1]->locality); + x++, stp++) { + *stp = toupper(*stp); + } /* Then null out the delimiter so the language copy works */ *localitydelim = '\0'; - } - if( NULL == ( langs->languages[ langs->count - 1]->language = - strdup( langtok))) { - printf( "Unable to allocate memory for language '%s'\n", - langtok); - free_accept_languages( langs); - free( langdup); + } + if(NULL == (langs->languages[ langs->count - 1]->language = + strdup(langtok))) { + printf("Unable to allocate memory for language '%s'\n", + langtok); + free_accept_languages(langs); + free(langdup); return NULL; + } + + /* Get the next language token */ + langtok = strtok_r(NULL, ",", &saveptr); } - /* Get the next language token */ - langtok = strtok_r( NULL, ",", &saveptr); + free(langdup); + return langs; } - free( langdup); - return langs; -} +int compare_accept_languages(const void *p1, const void *p2) { + accept_language * lang1 = *(accept_language **)p1; + accept_language * lang2 = *(accept_language **)p2; -int compare_accept_languages( const void *p1, const void *p2) { - accept_language * lang1 = *( accept_language **)p1; - accept_language * lang2 = *( accept_language **)p2; - - if( lang1->q == lang2->q) { - if((( NULL == lang1->locality) && ( NULL == lang2->locality)) || - (( NULL != lang1->locality) && ( NULL != lang2->locality))) { + if(lang1->q == lang2->q) { + if(((NULL == lang1->locality) && (NULL == lang2->locality)) || + ((NULL != lang1->locality) && (NULL != lang2->locality))) { return 0; - } - else if( NULL != lang1->locality) { + } + else if(NULL != lang1->locality) { return -1; - } + } else { /* NULL != lang2->locality */ return 1; + } } - } else { - return( lang2->q > lang1->q); + return(lang2->q > lang1->q); + } } -} -void free_accept_languages( accept_languages * langs) { +void free_accept_languages(accept_languages * langs) { int x; - if( NULL == langs) { + if(NULL == langs) { return; - } + } - for( x = 0; x < langs->count; x++) { - if( NULL != langs->languages[ x]) { - if( langs->languages[ x]->language != NULL) { - free( langs->languages[ x]->language); + for(x = 0; x < langs->count; x++) { + if(NULL != langs->languages[ x]) { + if(langs->languages[ x]->language != NULL) { + free(langs->languages[ x]->language); + } + if(langs->languages[ x]->locality != NULL) { + free(langs->languages[ x]->locality); + } + free(langs->languages[ x]); } - if( langs->languages[ x]->locality != NULL) { - free( langs->languages[ x]->locality); - } - free( langs->languages[ x]); } - } - if( langs->languages != NULL) { - free( langs->languages); - } - free( langs); + if(langs->languages != NULL) { + free(langs->languages); + } + free(langs); return; -} + } /* free() memory allocated to storing the CGI variables */ void free_cgivars(char **cgivars) { Modified: nagioscore/branches/nagios-3-4-x/cgi/history.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/history.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/cgi/history.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -805,22 +805,22 @@ else if(display_type == DISPLAY_HOSTS) { if(history_type == HOST_HISTORY || history_type == SERVICE_HISTORY) { - snprintf(match1, sizeof( match1), - " HOST ALERT: %s;", host_name); - snprintf(match2, sizeof( match2), - " SERVICE ALERT: %s;", host_name); + snprintf(match1, sizeof(match1), + " HOST ALERT: %s;", host_name); + snprintf(match2, sizeof(match2), + " SERVICE ALERT: %s;", host_name); } else if(history_type == HOST_FLAPPING_HISTORY || history_type == SERVICE_FLAPPING_HISTORY) { - snprintf(match1, sizeof( match1), - " HOST FLAPPING ALERT: %s;", host_name); - snprintf(match2, sizeof( match2), - " SERVICE FLAPPING ALERT: %s;", host_name); + snprintf(match1, sizeof(match1), + " HOST FLAPPING ALERT: %s;", host_name); + snprintf(match2, sizeof(match2), + " SERVICE FLAPPING ALERT: %s;", host_name); } else if(history_type == HOST_DOWNTIME_HISTORY || history_type == SERVICE_DOWNTIME_HISTORY) { - snprintf(match1, sizeof( match1), - " HOST DOWNTIME ALERT: %s;", host_name); - snprintf(match2, sizeof( match2), - " SERVICE DOWNTIME ALERT: %s;", host_name); + snprintf(match1, sizeof(match1), + " HOST DOWNTIME ALERT: %s;", host_name); + snprintf(match2, sizeof(match2), + " SERVICE DOWNTIME ALERT: %s;", host_name); } if(show_all_hosts == TRUE) @@ -859,11 +859,11 @@ else if(display_type == DISPLAY_SERVICES) { if(history_type == SERVICE_HISTORY) - snprintf(match1, sizeof( match1), " SERVICE ALERT: %s;%s;", host_name, svc_description); + snprintf(match1, sizeof(match1), " SERVICE ALERT: %s;%s;", host_name, svc_description); else if(history_type == SERVICE_FLAPPING_HISTORY) - snprintf(match1, sizeof( match1), " SERVICE FLAPPING ALERT: %s;%s;", host_name, svc_description); + snprintf(match1, sizeof(match1), " SERVICE FLAPPING ALERT: %s;%s;", host_name, svc_description); else if(history_type == SERVICE_DOWNTIME_HISTORY) - snprintf(match1, sizeof( match1), " SERVICE DOWNTIME ALERT: %s;%s;", host_name, svc_description); + snprintf(match1, sizeof(match1), " SERVICE DOWNTIME ALERT: %s;%s;", host_name, svc_description); if(strstr(temp_buffer, match1) && (history_type == SERVICE_HISTORY || history_type == SERVICE_FLAPPING_HISTORY || history_type == SERVICE_DOWNTIME_HISTORY)) display_line = TRUE; Modified: nagioscore/branches/nagios-3-4-x/cgi/status.c =================================================================== --- nagioscore/branches/nagios-3-4-x/cgi/status.c 2013-03-09 21:12:46 UTC (rev 2652) +++ nagioscore/branches/nagios-3-4-x/cgi/status.c 2013-03-09 21:46:35 UTC (rev 2653) @@ -128,8 +128,8 @@ void show_hostgroup_grid(hostgroup *); void show_filters(void); -void create_pagenumbers(int total_entries,int visible_entries, char *temp_url,int type_service); -void create_page_limiter(int result_limit,char *temp_url); +void create_pagenumbers(int total_entries, int visible_entries, char *temp_url, int type_service); +void create_page_limiter(int result_limit, char *temp_url); int passes_host_properties_filter(hoststatus *); int passes_service_properties_filter(servicestatus *); @@ -158,8 +158,8 @@ int group_style_type = STYLE_OVERVIEW; int navbar_search = FALSE; -/* experimental paging feature */ -int temp_result_limit; +/* experimental paging feature */ +int temp_result_limit; int page_start; int limit_results = TRUE; @@ -554,15 +554,15 @@ printf("<link rel='stylesheet' type='text/css' href='%s%s' />\n", url_stylesheets_path, COMMON_CSS); printf("<link rel='stylesheet' type='text/css' href='%s%s' />\n", url_stylesheets_path, STATUS_CSS); } - - /* added jquery library 1/31/2012 */ - printf("<script type='text/javascript' src='%s%s'></script>\n",url_js_path, JQUERY_JS); - /* JS function to append content to elements on page */ - printf("<script type='text/javascript'>\n"); - printf("$(document).ready(function() { $('#top_page_numbers').append($('#bottom_page_numbers').html() ); });"); + + /* added jquery library 1/31/2012 */ + printf("<script type='text/javascript' src='%s%s'></script>\n", url_js_path, JQUERY_JS); + /* JS function to append content to elements on page */ + printf("<script type='text/javascript'>\n"); + printf("$(document).ready(function() { $('#top_page_numbers').append($('#bottom_page_numbers').html() ); });"); printf("function set_limit(url) { \nthis.location = url+'&limit='+$('#limit').val();\n }"); printf("</script>\n"); - + printf("</head>\n"); printf("<body class='status'>\n"); @@ -787,7 +787,7 @@ service_filter = strdup(variables[x]); strip_html_brackets(service_filter); } - + /* experimental page limit feature */ else if(!strcmp(variables[x], "start")) { x++; @@ -796,23 +796,23 @@ break; } page_start = atoi(variables[x]); - } + } else if(!strcmp(variables[x], "limit")) { x++; if(variables[x] == NULL) { error = TRUE; break; } - temp_result_limit = atoi(variables[x]); - if(temp_result_limit == 0) + temp_result_limit = atoi(variables[x]); + if(temp_result_limit == 0) limit_results = FALSE; - else - limit_results = TRUE; - } - + else + limit_results = TRUE; + } + } - + /* free memory allocated to the CGI variables */ free_cgivars(variables); @@ -896,9 +896,9 @@ printf("<th class='serviceTotals'>"); printf("<a class='serviceTotals' href='%s?", STATUS_CGI); - /* paging */ + /* paging */ if(temp_result_limit) - printf("limit=%i&",temp_result_limit); + printf("limit=%i&", temp_result_limit); if(display_type == DISPLAY_HOSTS) printf("host=%s", (host_name == NULL) ? "all" : url_encode(host_name)); else if(display_type == DISPLAY_SERVICEGROUPS) @@ -911,9 +911,9 @@ printf("<th class='serviceTotals'>"); printf("<a class='serviceTotals' href='%s?", STATUS_CGI); - /* paging */ + /* paging */ if(temp_result_limit) - printf("limit=%i&",temp_result_limit); + printf("limit=%i&", temp_result_limit); if(display_type == DISPLAY_HOSTS) printf("host=%s", (host_name == NULL) ? "all" : url_encode(host_name)); else if(display_type == DISPLAY_SERVICEGROUPS) @@ -926,9 +926,9 @@ printf("<th class='serviceTotals'>"); printf("<a class='serviceTotals' href='%s?", STATUS_CGI); - /* paging */ + /* paging */ if(temp_result_limit) - printf("limit=%i&",temp_result_limit); + printf("limit=%i&", temp_result_limit); if(display_type == DISPLAY_HOSTS) printf("host=%s", (host_name == NULL) ? "all" : url_encode(host_name)); else if(display_type == DISPLAY_SERVICEGROUPS) @@ -941,9 +941,9 @@ printf("<th class='serviceTotals'>"); printf("<a class='serviceTotals' href='%s?", STATUS_CGI); - /* paging */ + /* paging */ if(temp_result_limit) - printf("limit=%i&",temp_result_limit); + printf("limit=%i&", temp_result_limit); if(display_type == DISPLAY_HOSTS) printf("host=%s", (host_name == NULL) ? "all" : url_encode(host_name)); else if(display_type == DISPLAY_SERVICEGROUPS) @@ -956,9 +956,9 @@ printf("<th class='serviceTotals'>"); printf("<a class='serviceTotals' href='%s?", STATUS_CGI); - /* paging */ + /* paging */ if(temp_result_limit) - printf("limit=%i&",temp_result_limit); + printf("limit=%i&", temp_result_limit); if(display_type == DISPLAY_HOSTS) printf("host=%s", (host_name == NULL) ? "all" : url_encode(host_name)); else if(display_type == DISPLAY_SERVICEGROUPS) @@ -1000,9 +1000,9 @@ printf("<th class='serviceTotals'>"); printf("<a class='serviceTotals' href='%s?", STATUS_CGI); - /* paging */ + /* paging */ if(temp_result_limit) - printf("limit=%i&",temp_result_limit); + printf("limit=%i&", temp_result_limit); if(display_type == DISPLAY_H... [truncated message content] |
From: <est...@us...> - 2013-03-09 22:08:06
|
Revision: 2654 http://nagios.svn.sourceforge.net/nagios/?rev=2654&view=rev Author: estanley375 Date: 2013-03-09 22:07:58 +0000 (Sat, 09 Mar 2013) Log Message: ----------- Update version to 3.5.0rc2 Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-03-09 21:46:35 UTC (rev 2653) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-03-09 22:07:58 UTC (rev 2654) @@ -3,7 +3,7 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.5.0rc1 + * Version: 3.5.0rc2 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-03-09 21:46:35 UTC (rev 2653) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-03-09 22:07:58 UTC (rev 2654) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.5.0rc1 + * Version: 3.5.0rc2 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2013-03-09 21:46:35 UTC (rev 2653) +++ nagioscore/branches/nagios-3-4-x/configure 2013-03-09 22:07:58 UTC (rev 2654) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.5.0rc1" +PKG_VERSION="3.5.0rc2" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="02-28-2013" +PKG_REL_DATE="03-09-2013" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2013-03-09 21:46:35 UTC (rev 2653) +++ nagioscore/branches/nagios-3-4-x/configure.in 2013-03-09 22:07:58 UTC (rev 2654) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.5.0rc1" +PKG_VERSION="3.5.0rc2" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="02-28-2013" +PKG_REL_DATE="03-09-2013" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2013-03-09 21:46:35 UTC (rev 2653) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2013-03-09 22:07:58 UTC (rev 2654) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.5.0rc1" -#define PROGRAM_MODIFICATION_DATE "02-28-2013" +#define PROGRAM_VERSION "3.5.0rc2" +#define PROGRAM_MODIFICATION_DATE "03-09-2013" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2013-03-09 21:46:35 UTC (rev 2653) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2013-03-09 22:07:58 UTC (rev 2654) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.5.0rc1 +%define version 3.5.0rc2 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2013-03-09 21:46:35 UTC (rev 2653) +++ nagioscore/branches/nagios-3-4-x/update-version 2013-03-09 22:07:58 UTC (rev 2654) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.5.0rc1 +CURRENTVERSION=3.5.0rc2 # Last date -LASTDATE=02-28-2013 +LASTDATE=03-09-2013 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-03-15 11:14:09
|
Revision: 2665 http://nagios.svn.sourceforge.net/nagios/?rev=2665&view=rev Author: estanley375 Date: 2013-03-15 11:14:02 +0000 (Fri, 15 Mar 2013) Log Message: ----------- Update version to 3.5.0 Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/base/nagios.c nagioscore/branches/nagios-3-4-x/base/nagiostats.c nagioscore/branches/nagios-3-4-x/configure nagioscore/branches/nagios-3-4-x/configure.in nagioscore/branches/nagios-3-4-x/html/main.php nagioscore/branches/nagios-3-4-x/include/common.h nagioscore/branches/nagios-3-4-x/nagios.spec nagioscore/branches/nagios-3-4-x/update-version Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-03-15 11:14:02 UTC (rev 2665) @@ -2,7 +2,7 @@ Nagios 3.x Change Log ##################### -3.5.0 - xx/xx/xxxx +3.5.0 - 03/15/2013 ------------------ * Fixed bug #403: The "configuration" page of the webui doesn't use entity encoding when displaying the "command expansion" item (Eric Stanley, Phil Randal) * Fixed bug #424: Nagios Core 3.4.4 seg fault (core dump) on restart after removing config for running service (Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/base/nagios.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/base/nagios.c 2013-03-15 11:14:02 UTC (rev 2665) @@ -3,7 +3,7 @@ * NAGIOS.C - Core Program Code For Nagios * * Program: Nagios Core - * Version: 3.5.0rc2 + * Version: 3.5.0 * License: GPL * Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors * Copyright (c) 1999-2009 Ethan Galstad Modified: nagioscore/branches/nagios-3-4-x/base/nagiostats.c =================================================================== --- nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/base/nagiostats.c 2013-03-15 11:14:02 UTC (rev 2665) @@ -3,7 +3,7 @@ * NAGIOSTATS.C - Displays Nagios Statistics * * Program: Nagiostats - * Version: 3.5.0rc2 + * Version: 3.5.0 * License: GPL * Copyright (c) 2003-2008 Ethan Galstad (ega...@na...) * Modified: nagioscore/branches/nagios-3-4-x/configure =================================================================== --- nagioscore/branches/nagios-3-4-x/configure 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/configure 2013-03-15 11:14:02 UTC (rev 2665) @@ -1314,9 +1314,9 @@ PKG_NAME=nagios -PKG_VERSION="3.5.0rc2" +PKG_VERSION="3.5.0" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="03-09-2013" +PKG_REL_DATE="03-15-2013" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do Modified: nagioscore/branches/nagios-3-4-x/configure.in =================================================================== --- nagioscore/branches/nagios-3-4-x/configure.in 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/configure.in 2013-03-15 11:14:02 UTC (rev 2665) @@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/nagios) PKG_NAME=nagios -PKG_VERSION="3.5.0rc2" +PKG_VERSION="3.5.0" PKG_HOME_URL="http://www.nagios.org/" -PKG_REL_DATE="03-09-2013" +PKG_REL_DATE="03-15-2013" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL Modified: nagioscore/branches/nagios-3-4-x/html/main.php =================================================================== (Binary files differ) Modified: nagioscore/branches/nagios-3-4-x/include/common.h =================================================================== --- nagioscore/branches/nagios-3-4-x/include/common.h 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/include/common.h 2013-03-15 11:14:02 UTC (rev 2665) @@ -22,8 +22,8 @@ #include "shared.h" -#define PROGRAM_VERSION "3.5.0rc2" -#define PROGRAM_MODIFICATION_DATE "03-09-2013" +#define PROGRAM_VERSION "3.5.0" +#define PROGRAM_MODIFICATION_DATE "03-15-2013" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ Modified: nagioscore/branches/nagios-3-4-x/nagios.spec =================================================================== --- nagioscore/branches/nagios-3-4-x/nagios.spec 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/nagios.spec 2013-03-15 11:14:02 UTC (rev 2665) @@ -1,5 +1,5 @@ %define name nagios -%define version 3.5.0rc2 +%define version 3.5.0 %define release 1 %define nsusr nagios %define nsgrp nagios Modified: nagioscore/branches/nagios-3-4-x/update-version =================================================================== --- nagioscore/branches/nagios-3-4-x/update-version 2013-03-14 14:50:35 UTC (rev 2664) +++ nagioscore/branches/nagios-3-4-x/update-version 2013-03-15 11:14:02 UTC (rev 2665) @@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=3.5.0rc2 +CURRENTVERSION=3.5.0 # Last date -LASTDATE=03-09-2013 +LASTDATE=03-15-2013 if [ "x$1" = "x" ] then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-05-06 00:38:45
|
Revision: 2752 http://nagios.svn.sourceforge.net/nagios/?rev=2752&view=rev Author: estanley375 Date: 2013-05-06 00:38:36 +0000 (Mon, 06 May 2013) Log Message: ----------- Fixed bug #445: Adding triggered downtime for child hosts causes a SIGSEGV on restart/reload This was caused by triggered downtimes being deleted the when the triggering downtime was restarted. It was deleted because it was still marked as in effect. It is now marked as not in effect in the register_downtime() function. A related issue, also resolved, is that after a restart, the triggered downtime was dropped. The same issue also caused the CGI not to list the triggered downtime. This was due to the ordering of the downtimes in the retention.dat and status.dat files. Previously the triggered downtime always appeared before its triggering downtime in those files. When the downtimes were read from those files, either on a core restart or by the CGIs, the triggered downtime would be discarded because the triggering downtime did not yet exist. The most common case for this is when a downtime is created and the option is selected to create triggered downtimes on all child objects. A change was made in the way downtimes are sorted so that triggered downtimes with the same start times as untriggered downtimes always appear later in the list. This change in the sort order does NOT resolve the case where a manually created, triggered downtime is created with a start time earlier than the triggering downtime. This would need to be resolved by comparing the triggered_by value with the downtime ID regardless of the start time. However, this should be a relatively rare case and only caused by intentional scheduling by a human. This change was not implemented because it would cause the downtime list to be out of time order and the implications of this were not well understood. Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/common/downtime.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-04-30 07:45:27 UTC (rev 2751) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-05-06 00:38:36 UTC (rev 2752) @@ -4,6 +4,7 @@ 3.5.1 - xx/xx/xxxx ------------------ +* Fixed bug #445: Adding triggered downtime for child hosts causes a SIGSEGV on restart/reload (Eric Stanley) * Fixed bug #375: Freshness expiration never reached and bug #427: freshness threshold doesn't work if it is set long (Scott Wilkerson, Eric Stanley) * Fixed bug #432: Downtime scheduled as "Nagios Process" and not the Users name (Sam Lansing, Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/common/downtime.c =================================================================== --- nagioscore/branches/nagios-3-4-x/common/downtime.c 2013-04-30 07:45:27 UTC (rev 2751) +++ nagioscore/branches/nagios-3-4-x/common/downtime.c 2013-05-06 00:38:36 UTC (rev 2752) @@ -360,6 +360,14 @@ } } + /* If the downtime is triggered and was in effect, mark it as not in + effect so it gets scheduled correctly */ + if((temp_downtime->triggered_by != 0) && + (TRUE == temp_downtime->is_in_effect)) { + was_in_effect = temp_downtime->is_in_effect; + temp_downtime->is_in_effect = FALSE; + } + if((FALSE == temp_downtime->fixed) && (FALSE == was_in_effect)) { /* increment pending flex downtime counter */ if(temp_downtime->type == HOST_DOWNTIME) @@ -1111,6 +1119,39 @@ static int downtime_compar(const void *p1, const void *p2) { scheduled_downtime *d1 = *(scheduled_downtime **)p1; scheduled_downtime *d2 = *(scheduled_downtime **)p2; + + /* + If the start times of two downtimes are equal and one is triggered but + but the other is not, the triggered downtime should be later in the + list than the untriggered one. This is so they are written to the + retention.dat and status.dat in the correct order. + + Previously the triggered downtime always appeared before its + triggering downtime in those files. When the downtimes were read + from those files, either on a core restart or by the CGIs, the + triggered downtime would be discarded because the triggering + downtime did not yet exist. + + The most common case for this is when a downtime is created and + the option is selected to create triggered downtimes on all child + objects. This change in the sort order does NOT resolve the + case where a manually created, triggered downtime is created with + a start time earlier than the triggering downtime. + + This would need to be resolved by comparing the triggered_by value + with the downtime ID regardless of the start time. However, this + should be a relatively rare case and only caused by intentional + scheduling by a human. This change was not implemented because it + would cause the downtime list to be out of time order and the + implications of this were not well understood. + */ + + if(d1->start_time == d2->start_time) { + if(( d1->triggered_by == 0 && d2->triggered_by != 0) || + ( d1->triggered_by != 0 && d2->triggered_by == 0)) { + return d1->triggered_by == 0 ? -1 : 1; + } + } return (d1->start_time < d2->start_time) ? -1 : (d1->start_time - d2->start_time); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <est...@us...> - 2013-05-06 12:18:54
|
Revision: 2754 http://nagios.svn.sourceforge.net/nagios/?rev=2754&view=rev Author: estanley375 Date: 2013-05-06 12:18:46 +0000 (Mon, 06 May 2013) Log Message: ----------- Fixed bug #407: Reloading nagios config causes spaces in notifications to become plus signs (Alexey Dvoryanchikov) Also fixed bug #444: Nagios 3.5.0 problem with macro $ADMINEMAIL$ : @ is converted to %40 after 2 nagios reload (Duplicate of bug #407) Modified Paths: -------------- nagioscore/branches/nagios-3-4-x/Changelog nagioscore/branches/nagios-3-4-x/common/macros.c Modified: nagioscore/branches/nagios-3-4-x/Changelog =================================================================== --- nagioscore/branches/nagios-3-4-x/Changelog 2013-05-06 00:40:40 UTC (rev 2753) +++ nagioscore/branches/nagios-3-4-x/Changelog 2013-05-06 12:18:46 UTC (rev 2754) @@ -4,6 +4,8 @@ 3.5.1 - xx/xx/xxxx ------------------ +* Fixed bug #444: Nagios 3.5.0 problem with macro $ADMINEMAIL$ : @ is converted to %40 after 2 nagios reload (Duplicate of bug #407) +* Fixed bug #407: Reloading nagios config causes spaces in notifications to become plus signs (Alexey Dvoryanchikov) * Fixed bug #445: Adding triggered downtime for child hosts causes a SIGSEGV on restart/reload (Eric Stanley) * Fixed bug #375: Freshness expiration never reached and bug #427: freshness threshold doesn't work if it is set long (Scott Wilkerson, Eric Stanley) * Fixed bug #432: Downtime scheduled as "Nagios Process" and not the Users name (Sam Lansing, Eric Stanley) Modified: nagioscore/branches/nagios-3-4-x/common/macros.c =================================================================== --- nagioscore/branches/nagios-3-4-x/common/macros.c 2013-05-06 00:40:40 UTC (rev 2753) +++ nagioscore/branches/nagios-3-4-x/common/macros.c 2013-05-06 12:18:46 UTC (rev 2754) @@ -2585,6 +2585,7 @@ for(x = 0; x < MACRO_X_COUNT; x++) { macro_keys[x].code = x; macro_keys[x].name = macro_x_names[x]; + macro_keys[x].clean_options = 0; /* host/service output/perfdata and author/comment macros should get cleaned */ if((x >= 16 && x <= 19) || (x >= 49 && x <= 52) || (x >= 99 && x <= 100) || (x >= 124 && x <= 127)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |