Diff for /loncom/Attic/lonc between versions 1.25 and 1.26

version 1.25, 2002/02/06 14:15:37 version 1.26, 2002/02/19 21:12:22
Line 43 Line 43
 # 01/10/01 Scott Harrison  # 01/10/01 Scott Harrison
 # 03/14/01,03/15,06/12,11/26,11/27,11/28 Gerd Kortemeyer  # 03/14/01,03/15,06/12,11/26,11/27,11/28 Gerd Kortemeyer
 # 12/20 Scott Harrison  # 12/20 Scott Harrison
   # YEAR=2002
   # 2/19/02
 #   # 
 # based on nonforker from Perl Cookbook  # based on nonforker from Perl Cookbook
 # - server who multiplexes without forking  # - server who multiplexes without forking
Line 55  use Socket; Line 57  use Socket;
 use Fcntl;  use Fcntl;
 use Tie::RefHash;  use Tie::RefHash;
 use Crypt::IDEA;  use Crypt::IDEA;
   use Net::Ping;
   use LWP::UserAgent();
   
 my $status='';  my $status='';
 my $lastlog='';  my $lastlog='';
Line 72  sub catchexception { Line 76  sub catchexception {
   
 $childmaxattempts=5;  $childmaxattempts=5;
   
   # -------------------------------------- Routines to see if other box available
   
   sub online {
       my $host=shift;
       my $p=Net::Ping->new("tcp",10);
       my $online=$p->ping("$host");
       $p->close();
       undef ($p);
       return $online;
   }
   
   sub connected {
       my ($local,$remote)=@_;
       $local=~s/\W//g;
       $remote=~s/\W//g;
   
       unless ($hostname{$local}) { return 'local_unknown'; }
       unless ($hostname{$remote}) { return 'remote_unknown'; }
   
       unless (&online($hostname{$local})) { return 'local_offline'; }
   
       my $ua=new LWP::UserAgent;
       
       my $request=new HTTP::Request('GET',
         "http://".$hostname{$local}.'/cgi-bin/ping.pl?'.$remote);
   
       my $response=$ua->request($request);
   
       unless ($response->is_success) { return 'local_error'; }
   
       my $reply=$response->content;
       $reply=(split("\n",$reply))[0];
       $reply=~s/\W//g;
       if ($reply ne $remote) { return $reply; }
       return 'ok';
   }
   
   
 # -------------------------------- Set signal handlers to record abnormal exits  # -------------------------------- Set signal handlers to record abnormal exits
   
 $SIG{'QUIT'}=\&catchexception;  $SIG{QUIT}=\&catchexception;
 $SIG{__DIE__}=\&catchexception;  $SIG{__DIE__}=\&catchexception;
   
 # ------------------------------------ Read httpd access.conf and get variables  # ------------------------------------ Read httpd access.conf and get variables
Line 298  $SIG{HUP}=$SIG{USR1}='IGNORE'; Line 340  $SIG{HUP}=$SIG{USR1}='IGNORE';
 &status("Forking ...");  &status("Forking ...");
   
 foreach $thisserver (keys %hostip) {  foreach $thisserver (keys %hostip) {
     make_new_child($thisserver);      if (&online($hostname{$thisserver})) {
          make_new_child($thisserver);
       }
 }  }
   
 &logthis("Done starting initial servers");  &logthis("Done starting initial servers");
Line 317  while (1) { Line 361  while (1) {
     &status("Woke up");      &status("Woke up");
     foreach $thisserver (keys %hostip) {      foreach $thisserver (keys %hostip) {
         if (!$childpid{$thisserver}) {          if (!$childpid{$thisserver}) {
     if ($childatt{$thisserver}<$childmaxattempts) {      if (($childatt{$thisserver}<$childmaxattempts) &&
                   (&online($hostname{$thisserver}))) {
        $childatt{$thisserver}++;         $childatt{$thisserver}++;
                &logthis(                 &logthis(
    "<font color=yellow>INFO: Trying to reconnect for $thisserver "     "<font color=yellow>INFO: Trying to reconnect for $thisserver "
   ."($childatt{$thisserver} of $childmaxattempts attempts)</font>");     ."($childatt{$thisserver} of $childmaxattempts attempts)</font>"); 
                make_new_child($thisserver);                 make_new_child($thisserver);
     }     } else {
                  &logthis(
      "<font color=yellow>INFO: Skipping $thisserver "
     ."($childatt{$thisserver} of $childmaxattempts attempts)</font>");
              } 
                  
         }                 }       
     }      }
 }  }

Removed from v.1.25  
changed lines
  Added in v.1.26


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>