--- loncom/loncnew 2010/12/21 11:17:03 1.92 +++ loncom/loncnew 2011/01/24 11:02:32 1.95 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # lonc maintains the connections to remote computers # -# $Id: loncnew,v 1.92 2010/12/21 11:17:03 foxr Exp $ +# $Id: loncnew,v 1.95 2011/01/24 11:02:32 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -85,7 +85,7 @@ my $ClientConnection = 0; # Uniquifier f my $DebugLevel = 0; my $NextDebugLevel= 2; # So Sigint can toggle this. -my $IdleTimeout= 7200; # Wait two hours before pruning connections. +my $IdleTimeout= 5*60; # Seconds to wait prior to pruning connections. my $LogTransactions = 0; # When True, all transactions/replies get logged. my $executable = $0; # Get the full path to me. @@ -946,7 +946,8 @@ sub LondReadable { CompleteTransaction($Socket, $ActiveTransactions{$Socket}); } else { - Log("SUCCESS", "Connection ".$ConnectionCount." to " + my $count = $Socket->GetClientData(); + Log("SUCCESS", "Connection ".$count." to " .$RemoteHost." now ready for action"); } ServerToIdle($Socket); # Next work unit or idle. @@ -1240,6 +1241,7 @@ sub MakeLondConnection { &SetupTimer; # Need to handle timeouts with connections... } $ConnectionCount++; + $Connection->SetClientData($ConnectionCount); Debug(4, "Connection count = ".$ConnectionCount); if($ConnectionCount == 1) { # First Connection: QueueDelayed; @@ -1351,8 +1353,7 @@ sub QueueTransaction { } } -#-------------------------- Lonc UNIX socket handling --------------------- - +#-------------------------- Lonc UNIX socket handling ------------------- =pod =head2 ClientRequest @@ -1733,6 +1734,13 @@ sub ChildProcess { cb => \&ToggleDebug, data => "INT"); + # Block the pipe signal we'll get when the socket disconnects. We detect + # socket disconnection via send/receive failures. On disconnect, the + # socket becomes readable .. which will force the disconnect detection. + + my $set = POSIX::SigSet->new(SIGPIPE); + sigprocmask(SIG_BLOCK, $set); + # Figure out if we got passed a socket or need to open one to listen for # client requests.