[Nagios-users] Bug in 3.0.2 with service escalation contact groups

Andy Shellam andy.shellam-lists at mailnetwork.co.uk
Tue May 27 19:29:11 CEST 2008


Hi again Mathieu,

I've applied the patch successfully (I actually just went through the 
xodtemplate.c file and removed the spaces manually, as below.  The lines 
you sent for the host escalation were actually for the host itself!  The 
host escalation's contacts also had a space in the strtok() functions, 
which explains why a host escalation wouldn't register "Andy Shellam" as 
a contact name, but would recognise "NetServe Support" as a contact group.

After applying these changes and rebuilding Nagios, nagios -v ... would 
recognise the service escalations just fine, and they show up in the 
CGIs as well.

----
Service escalation - line 10251 :-
from:
for(contact_group=strtok(this_serviceescalation->contact_groups,", 
");contact_group!=NULL;contact_group=strtok(NULL,", ")){

to:
for(contact_group=strtok(this_serviceescalation->contact_groups,",");contact_group!=NULL;contact_group=strtok(NULL,",")){

Line 10265 :-
from:
for(contact_name=strtok(this_serviceescalation->contacts,", 
");contact_name!=NULL;contact_name=strtok(NULL,", ")){

to:
for(contact_name=strtok(this_serviceescalation->contacts,",");contact_name!=NULL;contact_name=strtok(NULL,",")){
----

----
Host escalation - line 10605 (not only contacts, not contact_groups is 
affected for host escalations):

from:
for(contact_name=strtok(this_hostescalation->contacts,", 
");contact_name!=NULL;contact_name=strtok(NULL,", ")){

to:
for(contact_name=strtok(this_hostescalation->contacts,",");contact_name!=NULL;contact_name=strtok(NULL,",")){
----

Regards,

Andy

Mathieu Gagné wrote:
> Hi Andy,
>
> Andy Shellam wrote:
>>
>> I'm more inclined to think that the service escalation is wrong in its
>> behaviour, but then I could be wrong?
>>
>
> HostEscalation differs from ServiceEscalation as you can see in the 
> source code:
>
> File: xdata/xodtemplate.c
>
> For ServiceEscalation
>
> Line: 10251 (for contactgroups)
> for(contact_group=strtok(this_serviceescalation->contact_groups,", 
> ");contact_group!=NULL;contact_group=strtok(NULL,", ")){
>
> Line: 10265 (for contacts)
> for(contact_name=strtok(this_serviceescalation->contacts,", 
> ");contact_name!=NULL;contact_name=strtok(NULL,", ")){
>
>
> For HostEscalation
>
> Line: 10397 (for contactgroups)
> for(contact_group=strtok(this_host->contact_groups,",");contact_group!=NULL;contact_group=strtok(NULL,",")){ 
>
>
> Line: 10413 (for contacts)
> for(contact_name=strtok(this_host->contacts,",");contact_name!=NULL;contact_name=strtok(NULL,",")){ 
>
>
>
> The white-space is considered a field separator for "contact_groups" 
> in ServiceEscalation but not HostEscalation.
>
> As an attachment is a patch which fixes this bug.
>
> And for the records, somebody should cleanup the source code regarding 
> this field separator glitch. The white-space is considered a field 
> separator in a lot of places.
>
> I'm not a C guru so I'm not sure if it's here on purpose or not and if 
> "fixing" it breaks backward-compatibility.
>
> -- 
> Mathie Gagné

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Nagios-devel mailing list
Nagios-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-devel


More information about the Developers mailing list