--- loncom/lonnet/perl/lonnet.pm 2002/11/22 18:07:14 1.302
+++ loncom/lonnet/perl/lonnet.pm 2002/12/05 23:51:05 1.309
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.302 2002/11/22 18:07:14 albertel Exp $
+# $Id: lonnet.pm,v 1.309 2002/12/05 23:51:05 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -80,7 +80,8 @@ use vars
qw(%perlvar %hostname %homecache %badServerCache %hostip %iphost %spareid %hostdom
%libserv %pr %prp %metacache %packagetab %titlecache
%courselogs %accesshash $processmarker $dumpcount
- %coursedombuf %coursehombuf %courseresdatacache %domaindescription);
+ %coursedombuf %coursehombuf %courseresdatacache
+ %domaindescription);
use IO::Socket;
use GDBM_File;
use Apache::Constants qw(:common :http);
@@ -202,6 +203,7 @@ sub critical {
" Critical message to unknown server ($server)");
return 'no_such_host';
}
+ sleep 2;
my $answer=reply($cmd,$server);
if ($answer eq 'con_lost') {
my $pingreply=reply('ping',$server);
@@ -215,7 +217,8 @@ sub critical {
$middlename=substr($middlename,0,16);
$middlename=~s/\W//g;
my $dfilename=
- "$perlvar{'lonSockDir'}/delayed/$now.$middlename.$server";
+ "$perlvar{'lonSockDir'}/delayed/$now.$dumpcount.$$.$middlename.$server";
+ $dumpcount++;
{
my $dfh;
if ($dfh=Apache::File->new(">$dfilename")) {
@@ -840,7 +843,8 @@ sub tokenwrapper {
if ($uri=~/^uploaded\/([^\/]+)\/([^\/]+)\/([^\/]+)(\?\.*)*$/) {
&appenv('userfile.'.$1.'/'.$2.'/'.$3 => $ENV{'request.course.id'});
return 'http://'.$hostname{ &homeserver($2,$1)}.'/'.$uri.
- (($uri=~/\?/)?'&':'?').'token='.$token;
+ (($uri=~/\?/)?'&':'?').'token='.$token.
+ '&tokenissued='.$perlvar{'lonHostID'};
} else {
return '/adm/notfound.html';
}
@@ -2717,6 +2721,8 @@ sub courseresdata {
if ($tmp !~ /^(con_lost|error|no_such_host)/i) {
$courseresdatacache{$hashid.'.time'}=time;
$courseresdatacache{$hashid}=\%dumpreply;
+ } elsif ($tmp =~ /^(con_lost|no_such_host)/) {
+ return $tmp;
}
}
foreach my $item (@which) {
@@ -2843,24 +2849,35 @@ sub EXT {
my $courselevelm=$courseid.'.'.$mapparm;
# ----------------------------------------------------------- first, check user
- my %resourcedata=&get('resourcedata',
- [$courselevelr,$courselevelm,$courselevel],
- $udom,$uname);
- if (($resourcedata{$courselevelr}!~/^error\:/) &&
- ($resourcedata{$courselevelr}!~/^con_lost/)) {
-
- if ($resourcedata{$courselevelr}) {
- return $resourcedata{$courselevelr}; }
- if ($resourcedata{$courselevelm}) {
- return $resourcedata{$courselevelm}; }
- if ($resourcedata{$courselevel}) {
- return $resourcedata{$courselevel}; }
- } else {
- if ($resourcedata{$courselevelr}!~/No such file/) {
- &logthis("WARNING:".
- " Trying to get resource data for ".
- $uname." at ".$udom.": ".
- $resourcedata{$courselevelr}."");
+ #most student don't have any data set, check if there is some data
+ #every thirty minutes
+ if (!
+ (exists($ENV{'cache.studentresdata'})
+ && (($ENV{'cache.studentresdata'}+1800) > time))) {
+ my %resourcedata=&get('resourcedata',
+ [$courselevelr,$courselevelm,$courselevel],
+ $udom,$uname);
+ my ($tmp)=keys(%resourcedata);
+ if (($tmp!~/^error\:/) && ($tmp!~/^con_lost/)) {
+ if ($resourcedata{$courselevelr}) {
+ return $resourcedata{$courselevelr}; }
+ if ($resourcedata{$courselevelm}) {
+ return $resourcedata{$courselevelm}; }
+ if ($resourcedata{$courselevel}) {
+ return $resourcedata{$courselevel}; }
+ } else {
+ if ($tmp!~/No such file/) {
+ &logthis("WARNING:".
+ " Trying to get resource data for ".
+ $uname." at ".$udom.": ".
+ $tmp."");
+ } elsif ($tmp=~/error:No such file/) {
+ $ENV{'cache.studentresdata'}=time;
+ &appenv(('cache.studentresdata'=>
+ $ENV{'cache.studentresdata'}));
+ } elsif ($tmp =~ /^(con_lost|no_such_host)/) {
+ return $tmp;
+ }
}
}
@@ -3473,6 +3490,7 @@ BEGIN {
my $config=Apache::File->new("$perlvar{'lonTabDir'}/hosts.tab");
while (my $configline=<$config>) {
+ next if ($configline =~ /^(\#|\s*$)/);
chomp($configline);
my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);
if ($id && $domain && $role && $name && $ip) {