--- loncom/lond	2010/11/02 10:51:46	1.463
+++ loncom/lond	2010/12/19 19:32:49	1.467
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # lond "LON Daemon" Server (port "LOND" 5663)
 #
-# $Id: lond,v 1.463 2010/11/02 10:51:46 foxr Exp $
+# $Id: lond,v 1.467 2010/12/19 19:32:49 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -58,7 +58,7 @@ my $DEBUG = 0;		       # Non zero to ena
 my $status='';
 my $lastlog='';
 
-my $VERSION='$Revision: 1.463 $'; #' stupid emacs
+my $VERSION='$Revision: 1.467 $'; #' stupid emacs
 my $remoteVERSION;
 my $currenthostid="default";
 my $currentdomainid;
@@ -2424,7 +2424,6 @@ sub user_has_session_handler {
 
     my ($udom, $uname) = map { &unescape($_) } (split(/:/, $tail));
     
-    &logthis("Looking for $udom $uname");
     opendir(DIR,$perlvar{'lonIDsDir'});
     my $filename;
     while ($filename=readdir(DIR)) {
@@ -7351,6 +7350,8 @@ sub releasereqd_check {
                 my ($reqdmajor,$reqdminor) = split(/\./,$courseinfo->{'releaserequired'});
                 return unless (&useable_role($reqdmajor,$reqdminor,$major,$minor));
             }
+        } else {
+            return;
         }
     }
     return 1;
@@ -7358,10 +7359,25 @@ sub releasereqd_check {
 
 sub get_courseinfo_hash {
     my ($cnum,$cdom,$home) = @_;
-    my $hashid = $cdom.':'.$cnum;
-    my %info = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,1,[$home],'.');
-    if (ref($info{$cdom.'_'.$cnum}) eq 'HASH') {
-        return &Apache::lonnet::do_cache_new('courseinfo',$hashid,$info{$cdom.'_'.$cnum},600);
+    my %info;
+    eval {
+        local($SIG{ALRM}) = sub { die "timeout\n"; };
+        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;
 }
@@ -7405,7 +7421,10 @@ sub check_homecourses {
             return;
         }
         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})) {
             next if ($recent{$hashid});