]> git.etc.gen.nz Git - spong.git/commitdiff
Bug with contacts with only delay attribute fixed (contacts repeatedly notified
authorStephen L Johnson <sjohnson@monsters.org>
Mon, 10 Jan 2000 23:35:37 +0000 (23:35 +0000)
committerStephen L Johnson <sjohnson@monsters.org>
Mon, 10 Jan 2000 23:35:37 +0000 (23:35 +0000)
insteast of once).
Move np file remove code in spong-server to $SEND_MESSAGE = "RED" routine. It's
only need in that routine.

src/spong-message.pl
src/spong-server.pl

index dd8a6e0b0ecfb9f9f6b341f5202f4534982736fb..605826161ac497c04bea2cfb5010eb7454977b23 100755 (executable)
@@ -507,8 +507,9 @@ RULE:
               # Remove the old npfile and fall thru to send messages
               unlink $np_file;
            # If last page time + repeat time still in the future
-           # or if no delay specified
-           } elsif ( $pagetime + $repeat > time() || $delay == 0 )
+           # or if no repeat specified, or status is not red
+           } elsif ( $pagetime + $repeat > time() || $repeat == 0 
+                     || $color ne 'red' )
               { next; }  # next contact
            else {
               # Update np-file and fall thru to send message
index f8f6b11c2640f97f4cbd0b8578599324b7a61aa5..80f6af9ada2b8f2be5ca9e6a1ddc75c6940c4fca 100755 (executable)
@@ -12,7 +12,6 @@
 # (1) Rewritten so that it answered both updates and queries (Ed Jul 22, 1997)
 # (2) Added code to handle "*-purple" named status files (Stephen L Johnson  Jun 03, 1999)
 
-
 use lib "@@LIBDIR@@";
 
 use Spong::HostList;
@@ -231,7 +230,7 @@ sub listen_for_queries {
       # updates however, as we need to send back some information.  Query
       # requests are simple one line messages.
 
-      my $header = <CLIENT>; chomp $header; $header =~ s/\r//;
+      my $header = <CLIENT>; chomp $header;
       my( $query, $hosts, $type, $view, $other ) =
         ( $header =~ /^(\w+)\s+\[([^\]]*)\]\s+(\w+)\s+(\w+)\b\s*(.*)$/ );
 
@@ -255,7 +254,6 @@ sub listen_for_queries {
       if( $query eq "config" )   { &show_config( @args ); }
       if( $query eq "info" )     { &show_info( @args ); }
       if( $query eq "service" )  { &show_service( @args, $other ); }
-      if( $query eq "histservice" ) { &show_hist_service( @args, $other ); }
 
       close( CLIENT );
       select $output;
@@ -320,16 +318,8 @@ sub save_status {
    # color, then update the history table and state file as well.
 
    if( ! -f "$SPONGDB/$host/services/$service-$color" ) {
-      # Update the history file
       $data = "status $time $service $color $sum\n";
       &save_data( ">>", "$SPONGDB/$host/history/current", $data);
-
-      if ( $STATUS_HISTORY ) {
-         # Save the status update information
-         $data = "timestamp $start $time\ncolor $color\n$time $sum\n$message\n";
-         &save_data( ">>", "$SPONGDB/$host/history/status/$time-$service",
-                    $data);
-      }
    }
 
    &debug( "[$$] updating status for $host/$service/$color" );
@@ -607,19 +597,6 @@ sub show_service {
    }
 }
 
-sub show_hist_service {
-   my( $hosts, $type, $view, $other ) = @_;
-   my( $service, $time ) = split(/ /,$other);
-   my( $h );
-   eval { $h = Spong::HistoryService->new( $hosts, $service, $time ); };
-   if ( $h ) {
-      $h->summary();
-      $h->display( $type, $view );
-   } else {
-     print &fmt_error($type,"Invalid request, object $hosts $other does not exist"),"\n";
-   }
-}
-
 
 
 
@@ -644,11 +621,6 @@ sub message_user {
 
    if ( $cmd eq "status" ) {
 
-      # Remove current np files if event is a change in status (i.e. dur = 0)
-      if ( $duration == 0 ) {
-         &remove_np_files($host,$service);
-      }
-
       if ($color eq 'red' && $duration != 0) {
         if ( -f $smessage ) {
             &debug("color is red, calling smessage for escalations");
@@ -669,7 +641,16 @@ sub message_user {
             } else {
                &error( "could not send message, $smessage not found" );
             }
-         }      } elsif ( $SEND_MESSAGE eq "RED-CHANGE" ) {
+         }
+
+         # Remove current np file if service has recovered
+         #   Normally this would be done in spong-message, but spong-messsage
+         #   is not called when $SEND_MESSAGE = "RED" for recovery events
+         if ( $duration == 0 && $color ne 'red' ) {
+            &remove_np_files($host,$service);
+         }
+
+      } elsif ( $SEND_MESSAGE eq "RED-CHANGE" ) {
          # If status has changed and either color is red, call spong-message
          if ( ( -f "$SPONGDB/$host/services/$service-red"
                          or $color eq "red" )