version 1.461, 2010/10/26 09:46:23
|
version 1.468, 2011/01/11 10:32:00
|
Line 53 use LONCAPA::lonssl;
|
Line 53 use LONCAPA::lonssl;
|
use Fcntl qw(:flock); |
use Fcntl qw(:flock); |
use Apache::lonnet; |
use Apache::lonnet; |
|
|
my $DEBUG = 1; # Non zero to enable debug log entries. |
my $DEBUG = 0; # Non zero to enable debug log entries. |
|
|
my $status=''; |
my $status=''; |
my $lastlog=''; |
my $lastlog=''; |
Line 1121 sub establish_key_handler {
|
Line 1121 sub establish_key_handler {
|
sub load_handler { |
sub load_handler { |
my ($cmd, $tail, $replyfd) = @_; |
my ($cmd, $tail, $replyfd) = @_; |
|
|
|
|
|
|
# Get the load average from /proc/loadavg and calculate it as a percentage of |
# Get the load average from /proc/loadavg and calculate it as a percentage of |
# the allowed load limit as set by the perl global variable lonLoadLim |
# the allowed load limit as set by the perl global variable lonLoadLim |
|
|
Line 2422 sub user_has_session_handler {
|
Line 2424 sub user_has_session_handler {
|
|
|
my ($udom, $uname) = map { &unescape($_) } (split(/:/, $tail)); |
my ($udom, $uname) = map { &unescape($_) } (split(/:/, $tail)); |
|
|
&logthis("Looking for $udom $uname"); |
|
opendir(DIR,$perlvar{'lonIDsDir'}); |
opendir(DIR,$perlvar{'lonIDsDir'}); |
my $filename; |
my $filename; |
while ($filename=readdir(DIR)) { |
while ($filename=readdir(DIR)) { |
Line 4423 sub get_id_handler {
|
Line 4424 sub get_id_handler {
|
sub put_dcmail_handler { |
sub put_dcmail_handler { |
my ($cmd,$tail,$client) = @_; |
my ($cmd,$tail,$client) = @_; |
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
|
|
|
|
my ($udom,$what)=split(/:/,$tail); |
my ($udom,$what)=split(/:/,$tail); |
chomp($what); |
chomp($what); |
my $hashref = &tie_domain_hash($udom, "nohist_dcmail", &GDBM_WRCREAT()); |
my $hashref = &tie_domain_hash($udom, "nohist_dcmail", &GDBM_WRCREAT()); |
Line 6384 sub make_new_child {
|
Line 6386 sub make_new_child {
|
or die "Can't unblock SIGINT for fork: $!\n"; |
or die "Can't unblock SIGINT for fork: $!\n"; |
$children{$pid} = $clientip; |
$children{$pid} = $clientip; |
&status('Started child '.$pid); |
&status('Started child '.$pid); |
|
close($client); |
return; |
return; |
} else { |
} else { |
# Child can *not* return from this subroutine. |
# Child can *not* return from this subroutine. |
Line 6392 sub make_new_child {
|
Line 6395 sub make_new_child {
|
#don't get intercepted |
#don't get intercepted |
$SIG{USR1}= \&logstatus; |
$SIG{USR1}= \&logstatus; |
$SIG{ALRM}= \&timeout; |
$SIG{ALRM}= \&timeout; |
|
# |
|
# Block sigpipe as it gets thrownon socket disconnect and we want to |
|
# deal with that as a read faiure instead. |
|
# |
|
my $blockset = POSIX::SigSet->new(SIGPIPE); |
|
sigprocmask(SIG_BLOCK, $blockset); |
|
|
$lastlog='Forked '; |
$lastlog='Forked '; |
$status='Forked'; |
$status='Forked'; |
|
|
Line 7347 sub releasereqd_check {
|
Line 7357 sub releasereqd_check {
|
my ($reqdmajor,$reqdminor) = split(/\./,$courseinfo->{'releaserequired'}); |
my ($reqdmajor,$reqdminor) = split(/\./,$courseinfo->{'releaserequired'}); |
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor)); |
} |
} |
|
} else { |
|
return; |
} |
} |
} |
} |
return 1; |
return 1; |
Line 7354 sub releasereqd_check {
|
Line 7366 sub releasereqd_check {
|
|
|
sub get_courseinfo_hash { |
sub get_courseinfo_hash { |
my ($cnum,$cdom,$home) = @_; |
my ($cnum,$cdom,$home) = @_; |
my $hashid = $cdom.':'.$cnum; |
my %info; |
my %info = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,1,[$home],'.'); |
eval { |
if (ref($info{$cdom.'_'.$cnum}) eq 'HASH') { |
local($SIG{ALRM}) = sub { die "timeout\n"; }; |
return &Apache::lonnet::do_cache_new('courseinfo',$hashid,$info{$cdom.'_'.$cnum},600); |
local($SIG{__DIE__})='DEFAULT'; |
|
alarm(3); |
|
%info = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,1,[$home],'.'); |
|
alarm(0); |
|
}; |
|
if ($@) { |
|
if ($@ eq "timeout\n") { |
|
&logthis("<font color='blue'>WARNING courseiddump for $cnum:$cdom from $home timedout</font>"); |
|
} else { |
|
&logthis("<font color='yellow'>WARNING unexpected error during eval of call for courseiddump from $home</font>"); |
|
} |
|
} else { |
|
if (ref($info{$cdom.'_'.$cnum}) eq 'HASH') { |
|
my $hashid = $cdom.':'.$cnum; |
|
return &Apache::lonnet::do_cache_new('courseinfo',$hashid,$info{$cdom.'_'.$cnum},600); |
|
} |
} |
} |
return; |
return; |
} |
} |
Line 7401 sub check_homecourses {
|
Line 7428 sub check_homecourses {
|
return; |
return; |
} |
} |
foreach my $hashid (keys(%recent)) { |
foreach my $hashid (keys(%recent)) { |
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
my ($result,$cached)=&Apache::lonnet::is_cached_new('courseinfo',$hashid); |
|
unless ($cached) { |
|
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
|
} |
} |
} |
foreach my $hashid (keys(%{$homecourses})) { |
foreach my $hashid (keys(%{$homecourses})) { |
next if ($recent{$hashid}); |
next if ($recent{$hashid}); |