From: <ag...@us...> - 2012-09-22 13:01:47
|
Revision: 2292 http://nagios.svn.sourceforge.net/nagios/?rev=2292&view=rev Author: ageric Date: 2012-09-22 13:01:37 +0000 (Sat, 22 Sep 2012) Log Message: ----------- core: Resolve contacts and contactgroups for services Livestatus crashes pretty hard when it gets service requests without this patch. Signed-off-by: Andreas Ericsson <ae...@op...> Modified Paths: -------------- nagioscore/trunk/base/config.c Modified: nagioscore/trunk/base/config.c =================================================================== --- nagioscore/trunk/base/config.c 2012-09-22 13:01:20 UTC (rev 2291) +++ nagioscore/trunk/base/config.c 2012-09-22 13:01:37 UTC (rev 2292) @@ -1481,6 +1481,8 @@ } total_objects = 0; for(temp_service = service_list; temp_service != NULL; temp_service = temp_service->next) { + contactgroupsmember *cgm; + contactsmember *cm; total_objects++; @@ -1535,6 +1537,23 @@ } } + for(cgm = temp_service->contact_groups; cgm; cgm = cgm->next) { + cgm->group_ptr = find_contactgroup(cgm->group_name); + if(cgm->group_ptr == NULL) { + logit(NSLOG_VERIFICATION_ERROR, TRUE, "Error: Contactgroup '%s' on service '%s;%s' could not be found\n", + cgm->group_name, temp_service->host_name, temp_service->description); + errors++; + } + } + for(cm = temp_service->contacts; cm; cm = cm->next) { + cm->contact_ptr = find_contact(cm->contact_name); + if(cm->contact_ptr == NULL) { + logit(NSLOG_VERIFICATION_ERROR, TRUE, "Error: Contact '%s' on service '%s;%s' could not be found\n", + cm->contact_name, temp_service->host_name, temp_service->description); + errors++; + } + } + /* see if the notification interval is less than the check interval */ if(temp_service->notification_interval < temp_service->check_interval && temp_service->notification_interval != 0) { logit(NSLOG_VERIFICATION_WARNING, TRUE, "Warning: Service '%s' on host '%s' has a notification interval less than its check interval! Notifications are only re-sent after checks are made, so the effective notification interval will be that of the check interval.", temp_service->description, temp_service->host_name); @@ -1631,6 +1650,7 @@ errors++; } + temp_contactgroupsmember->group_name = temp_contactgroup->group_name; /* save the contact group pointer for later */ temp_contactgroupsmember->group_ptr = temp_contactgroup; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |