--- loncom/Attic/lonc 2000/07/25 16:03:57 1.7
+++ loncom/Attic/lonc 2000/12/06 20:38:21 1.12
@@ -12,7 +12,10 @@
# 6/4/99,6/5,6/7,6/8,6/9,6/10,6/11,6/12,7/14,7/19,
# 10/8,10/9,10/15,11/18,12/22,
-# 2/8,7/25 Gerd Kortemeyer
+# 2/8,7/25 Gerd Kortemeyer
+# 12/05 Scott Harrison
+# 12/05 Gerd Kortemeyer
+#
# based on nonforker from Perl Cookbook
# - server who multiplexes without forking
@@ -25,8 +28,24 @@ use Fcntl;
use Tie::RefHash;
use Crypt::IDEA;
+# grabs exception and records it to log before exiting
+sub catchexception {
+ my ($signal)=@_;
+ $SIG{'QUIT'}='DEFAULT';
+ $SIG{__DIE__}='DEFAULT';
+ &logthis("CRITICAL: "
+ ."ABNORMAL EXIT. Child $$ for server $wasserver died through "
+ ."\"$signal\" with this parameter->[$@]");
+ die($@);
+}
+
$childmaxattempts=10;
+# -------------------------------- Set signal handlers to record abnormal exits
+
+$SIG{'QUIT'}=\&catchexception;
+$SIG{__DIE__}=\&catchexception;
+
# ------------------------------------ Read httpd access.conf and get variables
open (CONFIG,"/etc/httpd/conf/access.conf") || die "Can't read access.conf";
@@ -96,6 +115,7 @@ sub HUPSMAN { # sig
local($SIG{CHLD}) = 'IGNORE'; # we're going to kill our children
kill 'INT' => keys %children;
&logthis("CRITICAL: Restarting");
+ unlink("$execdir/logs/lonc.pid");
my $execdir=$perlvar{'lonDaemons'};
exec("$execdir/lonc"); # here we go again
}
@@ -272,7 +292,7 @@ $key=$key.$buildkey.$key.$buildkey.$key.
$key=substr($key,0,32);
my $cipherkey=pack("H32",$key);
if ($cipher=new IDEA $cipherkey) {
- &logthis("Secure connection inititalized: $conserver");
+ &logthis("Secure connection initialized: $conserver");
} else {
my $st=120+int(rand(240));
&logthis(
@@ -500,7 +520,3 @@ sub nonblock {
or die "Can't make socket nonblocking: $!\n";
}
-
-
-
-